我的sql函数中有以下代码:
if @max_chi > -999 begin INSERT INTO CH_TABLE(X1, X2, VALUE) VALUES(cur_out.sessionnumber, maxpos, max_chi) commit end
以下是SQL Server 2008查询,它给我一个错误:
在函数中无效使用副作用运算符“ INSERT”。
为什么我不允许这样做?我该怎么做才能解决此问题?
您不能使用将数据 插入基表中的功能 。函数 返回 数据。这被列为了 第一个 文档中的限制:
用户定义的函数不能用于执行修改数据库状态的操作。
“修改数据库状态”包括更改数据库中的任何数据(尽管表变量是OP大约3年前就不会关心的明显例外-该表变量仅在函数调用期间有效,并且不影响基础表)。
您应该使用存储过程,而不是函数。