sql-server – 关于存储过程默认返回值的MSDN

前端之家收集整理的这篇文章主要介绍了sql-server – 关于存储过程默认返回值的MSDN前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果没有错误发生,任何人都可以准确指出MSDN所说的每个用户存储过程默认返回0吗?换句话说,在作为存储过程时,我可以确定下面给出的示例代码
IF someStatement
BEGIN
  RETURN 1
END

如果someStatement为false且没有错误发生,应该总是返回零?

我知道它实际上是这样工作的,但是我没有从微软那里找到任何明确的声明.

解决方法

看起来曾几何时,返回值可能意味着sql Server 2000之前的某些内容(参见sql 2000 BOL return value article之前的参考).
我查看是否可以找到专门针对MS sql的这些原始返回码的列表,并找到了 following(我不知道它的真实性,但实际上并没有列出值).

因此,在阅读了所有这些文章之后,看起来@return_status是一个在执行存储过程时始终返回的参数(即使您不使用它).根据RETURN Books在线文章,返回码不能为空.

When used with a stored procedure,
RETURN cannot return a null value. If
a procedure tries to return a null
value (for example,using RETURN
@status when @status is NULL),a
warning message is generated and a
value of 0 is returned.

运行以下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不能为null(未设置为0或设置为NULL)…

至于假设的BOL article for sql 7.0中提到的错误代码,我的猜测将是Sybase的一个旧版本… Sybase 5.0 Manual

短剑的一种

猜你在找的MsSQL相关文章