加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:30:35 所属栏目:MsSql教程 来源:网络整理
导读:如果没有错误发生,任何人都可以准确指出MSDN所说的每个用户存储过程默认返回0吗?换句话说,在作为存储过程时,我可以确定下面给出的示例代码 IF someStatementBEGIN RETURN 1END 如果someStatement为false且没有错误发生,应该总是返回零? 我知道它实际上是这
如果没有错误发生,任何人都可以准确指出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

短剑的一种

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读