T-sql Cursor,如果出现错误会发生什么?

时间:2010-10-10 03:04:16

标签: sql-server tsql

如果在以下期间发生错误,将会发生什么:

  1. 声明游标
  2. 获取数据
  3. 如果在光标关闭之前发生错误会发生什么?它会自动关闭吗?

    当我使用光标时,处理错误的最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

使用更好的解决方案进行了更新

[CURSOR_STATUS][1]函数可用于检查游标的状态。

在SQL 2005及更高版本中,这可以包含在TRY...CATCH块中 像

这样的东西
BEGIN TRY

    DECLARE <cursorName>... CURSOR FOR
    ...cursor statement, fetch block, close & deallocate

END TRY
BEGIN CATCH

    IF (CURSOR_STATUS('global', '<cursorName>') > -2)
    DEALLOCATE dbCursor

    ...other error handling

END CATCH

答案 1 :(得分:1)

声明光标并且批处理终止后发生错误时,光标将保持打开状态。连接关闭后,光标将关闭。

如果可以捕获错误,最好在错误处理过程中关闭游标。