sql server 2000下动态定义游标,运行时报游标不存在

小潜s 2010-11-28 04:56:44
我参照网上介绍的动态游标使用方法在我机器上进行测试的时候,在打开游标及取数时会报游标不存在

脚本如下:
declare @sqlExec varchar(8000),@tableName varchar(255),@v_name varchar(200)
set @tableName = 'sysobjects'
set @sqlExec = 'declare cursor1 cursor for ' + CHAR(13)
set @sqlExec = @sqlExec + ' select name from ' + @tableName
exec(@sqlExec)
open cursor1
fetch next from cursor1 into @v_name
while @@fetch_status = 0
begin
select @v_name
fetch next from cursor1 into @v_name
end
close cursor1
deallocate cursor1

执行后报如下错误:
服务器: 消息 16916,级别 16,状态 1,行 6
名为 'cursor1' 的游标不存在。
服务器: 消息 16916,级别 16,状态 1,行 7
名为 'cursor1' 的游标不存在。
服务器: 消息 16916,级别 16,状态 1,行 13
名为 'cursor1' 的游标不存在。
服务器: 消息 16916,级别 16,状态 1,行 14
名为 'cursor1' 的游标不存在。

是sql server有什么参数要进行配置么?
...全文
410 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小潜s 2010-12-06
  • 打赏
  • 举报
回复
不过,加了global的话,有个比较麻烦的地方,如果一个用户在执行这段代码的时候,另一个用户也执行到这段代码的话,估计就会报游标重复了。。。。
小潜s 2010-12-06
  • 打赏
  • 举报
回复
加了global好象就ok了
谢谢
[Quote=引用 5 楼 zoeforever 的回复:]
加个这个试试

SQL code
set @sqlExec = 'declare cursor1 cursor global for ' + CHAR(13)
[/Quote]
小潜s 2010-12-06
  • 打赏
  • 举报
回复
我在2005下试同样的代码是没问题的,2000下就不行了,不知道是不是2000不支持这种写法
otnto 2010-11-29
  • 打赏
  • 举报
回复
关注,05是没问题
zoeforever 2010-11-29
  • 打赏
  • 举报
回复
加个这个试试
set @sqlExec = 'declare cursor1 cursor global for ' + CHAR(13)  
fpzgm 2010-11-29
  • 打赏
  • 举报
回复
有问题?
rucypli 2010-11-28
  • 打赏
  • 举报
回复
open cursor1
fetch next from cursor1 into @v_name
while @@fetch_status = 0
begin
select @v_name
fetch next from cursor1 into @v_name
end
close cursor1
deallocate cursor1


把这些也放到@sqlExec 里面
华夏小卒 2010-11-28
  • 打赏
  • 举报
回复
试了下,sql 2000,2005 都没有问题。

不知道你是怎么试的
ai_li7758521 2010-11-28
  • 打赏
  • 举报
回复
2005 下没问题。2000问题等高手。

22,209

社区成员

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

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