MSDN关于存储过程默认返回值

2023-12-19

谁能准确指出 MSDN 所说的如果没有错误发生,每个用户存储过程默认返回 0 的地方吗?换句话说,我可以确定下面给出的示例代码是存储过程吗

IF someStatement
BEGIN
  RETURN 1
END

如果 someStatement 为 false 并且没有发生错误,应该始终返回零吗?

我知道它实际上是这样工作的,但我没有找到微软对此的任何明确声明。


看起来从前返回值可能有某种含义(请参阅 pre SQL 2000 BOL 的参考返回值文章 http://www.sommarskog.se/error-handling-I.html#returnvalue) SQL Server 2000 之前的版本。 我四处查看是否可以找到这些专门针对 MS SQL 的原始返回代码的列表,并找到了下列的 http://library.cirr.com/Microsoft/SQL-Server-v7/html/ra-rz_14.htm(不过我不知道它的真实性,而且它实际上没有列出这些值)。

因此,在阅读所有这些文章后,@return_status 看起来像是一个在执行存储过程时始终返回的参数(即使您不使用它)。根据RETURN http://msdn.microsoft.com/en-us/library/ms174998.aspx在线书籍文章返回代码不能为空。

当与存储过程一起使用时, RETURN 不能返回空值。如果 过程尝试返回 null 值(例如,使用 RETURN @status 当 @status 为 NULL 时),a 生成警告消息并显示 返回值 0。

运行以下 T-SQL 明确显示了这一点,

create Procedure Test
as
begin
DECLARE @RTN integer
Return @RTN
END
GO

Exec Test
GO

Drop Procedure Test
GO

您将收到

The 'Test' procedure attempted to return a status of NULL, which is not allowed. A status of 0 will be returned instead.

最后看起来答案是因为@return_status 不能为空(未设置时为 0,或设置为 NULL)...

至于所谓的BOL中提到的错误代码article http://library.cirr.com/Microsoft/SQL-Server-v7/html/ra-rz_14.htm对于 SQL 7.0,我的猜测是 Sybase 的旧保留......Sybase 5.0手册 http://manuals.sybase.com/onlinebooks/group-pbarc/conn5/sqlug/@Generic__BookTextView/27897;pt=27897

Kris

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MSDN关于存储过程默认返回值 的相关文章

随机推荐