高分求助.....在SQLSERVER中如何判断一个CURSOR是否已经存在或被声明...急急急急急急急急

Eagles 2001-12-18 11:31:45
我在一个Proc中定义了一个CURSOR,用Deallocate释放,但是在多次执行这个Proc时,总是出错提示CURSOR已经被定义,已经被打开,所以我想在定义它时先判断是否存在,如果存在先释放他.在定义.
...全文
360 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluepower2008 2001-12-18
  • 打赏
  • 举报
回复
CURSOR_STATUS
这是一个标量函数,该函数允许存储过程的调用方确定针对一个给定参数,该过程是否返回游标和结果集。

语法
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)

参数
'local'

指定一个常量,该常量表明游标的源是一个本地游标名。

'cursor_name'

游标名。游标名必须符合标识符的规则。

'global'

指定一个常量,该常量表明游标的源是一个全局游标名。

'variable'

指定一个常量,该常量表明游标的源是一个本地变量。

'cursor_variable'

游标变量的名称。必须使用 cursor 数据类型定义游标变量。

返回类型
smallint

返回值
游标名
游标变量
1 游标的结果集至少有一行,并且:
对于不感知游标和键集游标,结果集至少有一行。

对于动态游标,结果集可以有零行、一行或多行。
分配给该变量的游标已经打开,并且:
对于不感知游标和键集游标,结果集至少有一行。

对于动态游标,结果集可以有零行、一行或多行。

0 游标的结果集为空。* 分配给该变量的游标已经打开,然而结果集肯定为空。*
-1 游标被关闭。 分配给该变量的游标被关闭。
-2 不可用。 可以是:
先前调用的过程并没有将游标指派给 OUTPUT 变量。

先前调用的过程给 OUTPUT 变量指派了游标,然而在过程结束时,游标处于关闭状态。因此,游标被释放,并且没有返回给调用过程。

没有将游标指派给已声明的游标变量。

-3 带有指定名称的游标不存在。 带有指定名称的游标变量并不存在,或者即使存在这样一个游标变量,但并没有给它分配游标。
N_chow 2001-12-18
  • 打赏
  • 举报
回复
更詳細的資料可參考Books on line.
N_chow 2001-12-18
  • 打赏
  • 举报
回复
IF CURSOR_STATUS('local','Cursor name')=-3
print 'Cursor is not exists.'

Eagles 2001-12-18
  • 打赏
  • 举报
回复
什么破论坛,,给别人分都不行.
Eagles 2001-12-18
  • 打赏
  • 举报
回复
怎么给不了分呀.
Eagles 2001-12-18
  • 打赏
  • 举报
回复
多谢各位,问题解决.
放分.


N_chow(一劍飄香)兄最快给50分
bluepower2008(蓝色力量)最详尽给30分
seafo(海之牙)的解决方案需要一些权限,不知道对错,也给20分..

再次感谢各位.
seafo 2001-12-18
  • 打赏
  • 举报
回复
if exists( select * from master.dbo.syscursors where cursor_name='authors_cursor')
DEALLOCATE authors_cursor

34,623

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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