返回值0是否始终在存储过程中成功?

cho*_*obo 13 sql-server stored-procedures sql-server-2008

如果存储过程返回零值,这是否始终表示它已成功运行?我正在使用MS SQL Server 2008.

SQL*_*ace 11

不,你可以自己退货

CREATE PROC pr_test AS 
SELECT 1/0

RETURN 0
GO
Run Code Online (Sandbox Code Playgroud)

现在运行它

DECLARE @i INT
exec @i = pr_test

SELECT @i  -- will be 0

DROP PROC pr_test
Run Code Online (Sandbox Code Playgroud)

现在让我们在没有return语句的情况下再做一次

CREATE PROC pr_test2 AS 
SELECT 1/0

GO

DECLARE @i INT
exec @i = pr_test2

SELECT @i  -- will be - 6
Run Code Online (Sandbox Code Playgroud)

最好使用an output parameter来传递状态和/或消息

  • 返回值如何为6?结果显示-消息8134,级别16,状态1,过程pr_test2,第3行除以零错误。(影响1行) (3认同)

Sea*_*ger 6

@@ ERROR返回值为"零"表示您的过程已完成且没有任何错误.

当然,这并不意味着它做了你想要的......

你能更具体地了解你在看什么吗?


Akr*_*hda 5

您可以使用该Return单词从存储过程返回任何整数值.这意味着零并不意味着存储过程已成功执行.