SQLServer:TRY CATCH FINALLY怎么使用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

我有一个场景,我需要类似的东西.NET's try-catch-finally块.

下面是伪代码:

BEGIN TRY
CREATE TABLE #temp
(
   --columns
)
--Process data with other data sets
END TRY
BEGIN CATCH
EXECUTE usp_getErrorMessage
END CATCH
BEGIN FINALLY
DROP TABLE #temp
END FINALLY
提问于
用户回答回答于

您可以声明一个表变量,而不是创建一个表变量(当查询结束时,表变量会自动消失)。

BEGIN TRY
DECLARE @temp TABLE
(
    --columns
)
--do stuff
END TRY
BEGIN CATCH
--do other stuff
END CATCH
用户回答回答于

虽然TSQL版本的TRy-CATCH与Final不完全相同,但它确实允许在TRY和CATCH语句结束后执行需要执行的代码。使用问题代码作为示例:

    BEGIN TRY
      CREATE TABLE #temp
       (
         --columns
       )
      --Process data with other data sets
    END TRY
    BEGIN CATCH
    EXECUTE usp_getErrorMessage
    END CATCH;

IF OBJECT_ID('tempdb..#temp') IS NOT NULL -- Check for table existence
    DROP TABLE #temp;

DROP TABLE命令将执行TRY或CATCH执行。

扫码关注云+社区