自定义函数中不能使用Update吗?

starwang 2003-04-09 02:38:34
我想在自定义函数中使用update语句,可是语法检查总是提示错误的使用了update。
在sqlserver的自定义函数中不能使用update语句吗?
还有使用begin tran 也不行!怎么回事呢?

...全文
160 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
starwang 2003-04-09
  • 打赏
  • 举报
回复
还是不太明白,怎么样的属于局部 table 变量?
比如我创建的函数是这样的
test表也是dbo的
有什么错误吗?
CREATE FUNCTION dbo.AddUserSpeed()
RETURNS int
BEGIN
declare @MaxUserid int
BEGIN TRAN

UPDATE test SET tname='test1' where tid=1

IF @@ERROR<>0
BEGIN
SET @MaxUserid=0
ROLLBACK TRAN
END
ELSE
BEGIN
COMMIT TRAN
END

RETURN @MaxUserid
END
mjhnet 2003-04-09
  • 打赏
  • 举报
回复
可以使用INSERT、UPDATE、DELETE 语句,但是这些语句只能修改函数的局部table变量。

附:

函数中的有效语句类型包括:

DECLARE 语句,该语句可用于定义函数局部的数据变量和游标。


为函数局部对象赋值,如使用 SET 给标量和表局部变量赋值。


游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。不允许使用 FETCH 语句将数据返回到客户端。仅允许使用 FETCH 语句通过 INTO 子句给局部变量赋值。


控制流语句。


SELECT 语句,该语句包含带有表达式的选择列表,其中的表达式将值赋予函数的局部变量。


INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部 table 变量。


EXECUTE 语句,该语句调用扩展存储过程。

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧