--游标一共有三种情况,可以用如下语句检查:declare @游标名 sysname
set @游标名='要检查的游名'select case cursor_status('local',@游标名)
when -3 then '不存在名为 ['+@游标名+'] 的局部游标'
else '名为 ['+@游标名+'] 的局部游标已经定义' end
,case cursor_status('global',@游标名)
when -3 then '不存在名为 ['+@游标名+'] 的全局游标'
else '名为 ['+@游标名+'] 的全局游标已经定义' end
,case cursor_status('variable',@游标名)
when -3 then '不存在名为 ['+@游标名+'] 的游标变量'
else '名为 ['+@游标名+'] 的游标变量已经定义' end

解决方案 »

  1.   

    --分开检查就是这样写:
    --要检查的游标名
    declare @游标名 sysname
    set @游标名='要检查的游名'--检查是否已经定义为局部游标
    select case cursor_status('local',@游标名)
    when -3 then '不存在名为 ['+@游标名+'] 的局部游标'
    else '名为 ['+@游标名+'] 的局部游标已经定义' end--检查是否已经定义为全局游标
    select case cursor_status('global',@游标名)
    when -3 then '不存在名为 ['+@游标名+'] 的全局游标'
    else '名为 ['+@游标名+'] 的全局游标已经定义' end--检查是否已经定义为游标变量
    select case cursor_status('variable',@游标名)
    when -3 then '不存在名为 ['+@游标名+'] 的游标变量'
    else '名为 ['+@游标名+'] 的游标变量已经定义' end
      

  2.   

    --测试--定义一个全局的游标
    declare 要检查的游名 cursor global
    for select 1
    --要检查的游标名
    declare @游标名 sysname
    set @游标名='要检查的游名'--检查是否已经定义为局部游标
    select case cursor_status('local',@游标名)
    when -3 then '不存在名为 ['+@游标名+'] 的局部游标'
    else '名为 ['+@游标名+'] 的局部游标已经定义' end--检查是否已经定义为全局游标
    select case cursor_status('global',@游标名)
    when -3 then '不存在名为 ['+@游标名+'] 的全局游标'
    else '名为 ['+@游标名+'] 的全局游标已经定义' end--检查是否已经定义为游标变量
    select case cursor_status('variable',@游标名)
    when -3 then '不存在名为 ['+@游标名+'] 的游标变量'
    else '名为 ['+@游标名+'] 的游标变量已经定义' end
    --关闭游标
    deallocate 要检查的游名/*--测试结果:-----------------------------------------
    不存在名为 [要检查的游名] 的局部游标(所影响的行数为 1 行)                                                                                                                                                           
    -----------------------------------------
    名为 [要检查的游名] 的全局游标已经定义(所影响的行数为 1 行)                                                                                                                                                           
    ------------------------------------------
    不存在名为 [要检查的游名] 的游标变量(所影响的行数为 1 行)--*/