我应该在T-SQL中放置错误处理吗?

Gur*_*epS 3 .net c# t-sql sql-server

作为开发人员,错误处理和try/catch是我编写的代码中非常重要的一部分.

但是,在SQL Server Stored Procs中,最好在SP中编写错误处理吗?如果没有(这似乎是常见的情况),异常是否会传播到.NET代码?我问这个问题,因为我认为T-SQL的行为类似于C#错误处理.

在T-SQL中编写错误处理的最佳方法是什么?

p.c*_*ell 5

是的,TRY...CATCH在您的TSQL代码中使用.在这种情况下,例外不会传播给客户端.

无论何时使用RAISEERROR或处理未处理的SQL异常,都会发生传播.

BEGIN TRY
     SELECT Foo FROM MyLinkedServer.dbo.SomeTable; --what if the remote server is down?

     DECLARE @Baz uniqueidentifier  = 15/2; --oops        
END TRY
BEGIN CATCH
    SELECT @Baz = NEWID();
    ROLLBACK TRAN; 
    --whatever business logic you have for handling your exception.
END CATCH
Run Code Online (Sandbox Code Playgroud)