gpt4 book ai didi

c# - TSQL 性能与 @@Error 和它们可以被替换吗?

转载 作者:太空狗 更新时间:2023-10-29 22:54:10 24 4
gpt4 key购买 nike

我继承了如下代码:

存储过程 UpdateSomeStuff

Update Table1 Set Col1=Para@1

IF @@Error > 0 Goto ERR

Update Table2 Set Col1=Para@2

IF @@Error > 0 Goto ERR

RETURN 0

ERR:

return -1;

这个sp在c#中被ADO.NET这样调用

try
{
myCommand.ExecuteNonQuery();
}
catch (System.Exception ex)
{
_log.Error(ex);
throw();
}
finally
{
if(myConnection!=null)
{
myConnection.Close();
}
}

我只是在问自己:IF @@Error > 0 Goto ERR 这部分有什么用吗?如果发生错误,sp 无论如何都会返回,并且会在调用方法中捕获异常。

调用代码不处理返回值 0 和 -1。我的计划是删除存储过程中的所有错误处理并获得相同的结果。我是对的还是我错过了什么?

最佳答案

更好的方法(从 SQL Server 2005 开始)是使用 TRY..CATCH :

BEGIN TRY
-- Perform operations here
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_MESSAGE() AS ErrorMessage;
END CATCH

一个很好的引用是:Error Handling in SQL 2005 and Later

关于c# - TSQL 性能与 @@Error 和它们可以被替换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com