谁能准确指出 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(使用前将#替换为@)