您的位置:首页 > 数据库

定义游标时使用动态SQL

2019-08-15 10:58 1181 查看
原文链接:https://www.geek-share.com/detail/2501829863.html

在定义游标时,我们一般是这样定义的:

DECLARE cur CURSOR FOR SELECT * FROM tableName

OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur

但是有时候需要用到动态SQL,一般情况下我们想到的方法是:

DECLARE @sql nvarchar(1000)

SET @sql='SELECT * FROM tableName ’

DECLARE cur CURSOR FOR

EXECUTE sp_executesql @sql
OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur

但是这种写法是错误的,正确的应该是:

DECLARE @sql nvarchar(1000)

SET @sql=‘DECLARE cur CURSOR FOR SELECT * FROM tableName’

EXECUTE sp_executesql @sql
OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: