Sql server SQL Server:是否可以从CLR UDF中调用更新表的存储过程
我不知道为什么,但CLR用户定义函数不允许更新表Sql server SQL Server:是否可以从CLR UDF中调用更新表的存储过程,sql-server,stored-procedures,user-defined-functions,Sql Server,Stored Procedures,User Defined Functions,我不知道为什么,但CLR用户定义函数不允许更新表 是否可以通过从更新表的CLR UDF调用存储过程来绕过此限制?它不是CLR UDF,它是任何RDBMS UDF函数,根据定义,它不能更改数据库的状态,即: 删除、插入、更新(即DML)语句 调用存储过程 永久更改服务器环境变量的值 等等 以及使用对非确定性(相同的输入返回不同的结果)函数(如GETDATE()、NEWID()等)的调用 更新: 面向对象,SQLServer2008放宽了对使用非确定性函数的限制。 如果UDF使用非确定性,则将其
是否可以通过从更新表的CLR UDF调用存储过程来绕过此限制?它不是CLR UDF,它是任何RDBMS UDF函数,根据定义,它不能更改数据库的状态,即:
- 删除、插入、更新(即DML)语句
- 调用存储过程
- 永久更改服务器环境变量的值
- 等等
以及使用对非确定性(相同的输入返回不同的结果)函数(如GETDATE()、NEWID()等)的调用
面向对象,SQLServer2008放宽了对使用非确定性函数的限制。 如果UDF使用非确定性,则将其视为非确定性 可以通过以下方式进行检查:
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.FunctionName'),'IsDeterministic')
您不能创建CLR存储过程而不是函数的原因是什么?我可以将其重写为存储过程,但这需要大量的工作。您是正确的:如果我尝试从UDF调用存储过程,我会收到一条错误消息,指出只有函数和“…一些扩展存储过程…”可以从UDF中调用。呃-回到绘图板上。