deallocate  游标名 ---关闭游标

解决方案 »

  1.   

    转下:
    --查看游标
    select * from master.dbo.syscursors where status<>-1--帮助
    --参数1 游标名
    --参数2 游标类型报告当前为连接打开的服务器游标的属性。语法
     sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT 
              , [ @cursor_scope = ] cursor_scope
     备注
    sp_cursor_list 生成连接打开的当前服务器游标列表,并对每个游标的全局属性进行说明,例如游标的可滚动性和可更新性。sp_cursor_list 列出的游标包括: Transact-SQL 服务器游标。
    API 服务器游标,由 ODBC 应用程序打开,然后调用 SQLSetCursorName 为游标命名。
    使用 sp_describe_cursor_columns 对游标返回的结果集的属性进行说明。使用 sp_describe_cursor_tables 报告游标引用的基表。sp_describe_cursor 报告的信息与 sp_cursor_list 相同,但只用于指定游标。参数
    [ @cursor_return = ] cursor_variable_name OUTPUT 已声明的游标变量的名称。cursor_variable_name 的数据类型为 cursor,没有默认值。游标是只读的可滚动动态游标。[ @cursor_scope = ] cursor_scope指定要报告的游标级别。cursor_scope 的数据类型为 int,没有默认值,可以是下列值中的一个。值  说明  

     报告所有本地游标。
     

     报告所有全局游标。
     

     报告本地游标和全局游标。
     
      

  2.   

    楼主的要求可以这样来完成:
    declare @str varchar(200) 
    Select @str = ''
    --动态拼接SQL 
    SELECT @str =  @str + ' GO  deallocate ' + cursor_name 
    FROM master.dbo.syscursors where status<>-1SELECT @STR = RIGHT(@str,LEN(@str) - 4)exec @str
      

  3.   

    跳到catch中? 不是还有finally么