如果没有错误发生,任何人都可以准确指出MSDN所说的每个用户存储过程默认返回0吗?换句话说,在作为存储过程时,我可以确定下面给出的示例代码
IF someStatement BEGIN RETURN 1 END
如果someStatement为false且没有错误发生,应该总是返回零?
我知道它实际上是这样工作的,但是我没有从微软那里找到任何明确的声明.
解决方法
看起来曾几何时,返回值可能意味着sql Server 2000之前的某些内容(参见sql 2000 BOL
return value article之前的参考).
我查看是否可以找到专门针对MS sql的这些原始返回码的列表,并找到了 following(我不知道它的真实性,但实际上并没有列出值).
我查看是否可以找到专门针对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.
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
短剑的一种