我有一个自定义函数,我正在尝试使用此函数创建一个持久化的列。
它给了我以下错误。
表’SomeTable’中的计算列’FormattedSSN’无法保留,因为该列是不确定的。
这是函数:
ALTER FUNCTION [dbo].[FormatSSN]() RETURNS VARCHAR(11) AS BEGIN return ''; END
这是使用函数添加列的查询:
ALTER TABLE SomeTable ADD FormattedSSN as dbo.FormatSSN() PERSISTED
请建议是否有任何出路。谢谢。
将 WITH SCHEMABINDING 添加到这样的函数中:
ALTER FUNCTION [dbo].[FormatSSN] ( @SSN VARCHAR(9) ) RETURNS CHAR(11) WITH SCHEMABINDING AS BEGIN your stuff here END
然后运行以验证:
IF OBJECTPROPERTY (OBJECT_ID(N'[dbo].[FormatSSN]'),'IsDeterministic') = 1 PRINT 'Function is detrministic.' ELSE IF OBJECTPROPERTY (OBJECT_ID(N'[dbo].[FormatSSN]'),'IsDeterministic') = 0 PRINT 'Function is NOT detrministic' GO
在这里工作。