【发布时间】:2011-04-26 19:14:57
【问题描述】:
我不知道为什么,但是不允许 CLR 用户定义函数更新表。
是否可以通过从 CLR UDF 调用存储过程来更新表来解决此限制?
【问题讨论】:
-
为什么不能创建 CLR 存储过程而不是函数?
-
我可以将其重写为存储过程,但这需要大量工作。
标签: sql-server stored-procedures user-defined-functions
我不知道为什么,但是不允许 CLR 用户定义函数更新表。
是否可以通过从 CLR UDF 调用存储过程来更新表来解决此限制?
【问题讨论】:
标签: sql-server stored-procedures user-defined-functions
它不是 CLR UDF,它是任何 RDBMS UDF 函数,根据定义,不能改变数据库的状态,即参与:
更新:
糟糕,SQL Server 2008 放宽了对使用非确定性函数的限制。
如果 UDF 使用非确定性,则将其视为非确定性。
可以通过以下方式查看:
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.FunctionName'),'IsDeterministic')
【讨论】: