Sql server 计算列'';在表';中';无法持久化,因为列不确定?

Sql server 计算列'';在表';中';无法持久化,因为列不确定?,sql-server,Sql Server,我有以下功能 create FUNCTION [dbo].[Valid](@c char(9)) RETURNs bit as begin DECLARE @sum int = 0; return 0 end 和下面的SQL create table test(A char(10)) alter table test add C as dbo.Valid(A) persisted; 有错误的 味精4936,16级,状态1,第50行 无法持久化表“test”中的计算列“C”,

我有以下功能

create FUNCTION [dbo].[Valid](@c char(9))
RETURNs bit
as
begin
    DECLARE @sum int = 0;
    return 0 
end
和下面的SQL

create table test(A char(10))
alter table test add C as dbo.Valid(A) persisted;
有错误的

味精4936,16级,状态1,第50行

无法持久化表“test”中的计算列“C”,因为该列不确定


函数必须使用提示进行修饰,否则SQL Server将跳过确定性验证(性能优化),并将该默认结果视为不确定性。

正如Elaskanator所述,您应该在函数定义处添加带有SCHEMABINDING的
,如下所示:

alter FUNCTION [dbo].[Valid](@c char(9))
RETURNS BIT WITH SCHEMABINDING
as
begin
    DECLARE @sum int = 0;
    return 0 
END

create table test(A char(10))
alter table test add C AS dbo.Valid(A) persisted;
更多信息: