| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:关于游标!求助!!!
只看楼主 加入收藏
河屋一鸥
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-1-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
关于游标!求助!!!
declare  @stmt  varchar(1024);
set @stmt ='declare hz_cur  cursor local for select col1,col2,col3 from tablename  where col1>1';
exec  (@stmt);
open hz_cur;
fetch  hz_cur  into @.........
while @@fetch_status=0
begin
..
..
    fetch hz_cur into @.......
end
close  hz_cur;
deallocate hz_cur;
报错:游标hz_cur不存在!!!
ps:把local去掉就不报错了。

问题:1/global的游标用起来有什么隐患
      2/上面那种写法怎样写才对。(不要直接declare hz_cur ....,因为我的select 语句有动态的where条件)
      
搜索更多相关主题的帖子: 游标 cursor local close 
2013-01-28 09:43
河屋一鸥
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-1-28
收藏
得分:0 
给自己顶一下,线上等。
2013-01-28 09:51
lxqlyld
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:116
专家分:125
注 册:2012-6-18
收藏
得分:7 
local将游标的作用域设置为局部,如果游标创建在批处理、存储过程或触发器中,则该游标仅在这个局部范围内有效。global将游标的作用域设置为全局,这样在由连接执行的任何存储过程或批处理中都可以引用该游标。

如果 LOCAL和 GLOBAL 都没有指定,则数据库选项default to local cursor 控制由 DECLARE CURSOR 语句使用的默认值。如果 default to local cursor 为 true,Transact-SQL 游标默认为是局部的。如果此选项为 false,Transact-SQL 游标默认为是全局游标。在 SQL Server 2000版中,default to local cursors 选项默认为 FALSE,以便与 SQL Server 早期版本中的内容匹配。

具体你上面的写法怎么写才对,我也不太清楚,可能你的游标设置为局部的了,所以才不存在吧
2013-01-31 10:07
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:7 
帮顶

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2013-02-04 19:25
NB2002
Rank: 1
等 级:新手上路
帖 子:2
专家分:9
注 册:2013-2-4
收藏
得分:7 
图片附件: 游客没有浏览图片的权限,请 登录注册
LOCAL和GLOBAL二选一
 
     LOCAL意味着游标的生存周期只在批处理或函数或存储过程中可见,而GLOBAL意味着游标对于特定连接作为上下文,全局内有效,例如:
 
     

     如果不指定游标作用域,默认作用域为GLOBAL
2013-02-05 10:49
快速回复:关于游标!求助!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030949 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved