sql - 出错时从存储过程返回值

标签 sql sql-server stored-procedures return-value

我在 SQL Server 中有一个 sp,当错误时返回 -4

-4是什么意思?是否有一个表格解释了可能的返回值是什么?

<小时/>

必须有一些标准

例如

declare @RetVal int  
EXEC @RetVal = stpTest  
select @RetVal

其中 stpTest 是“SELECT 1/0”,返回 -6。

-6一定意味着什么!

<小时/>

返回 -4 的 sp 中仅包含 UPDATE 和 SELECT INTO 语句。

它根本不会执行“SELECT -4”,那么我如何“找出 -4 在该特定存储过程中的含义”?

此外,如果没有标准,为什么除以零错误总是返回 -6?

<小时/>

如果你有一个不返回任何内容的 sp,即它没有任何 select 语句,而你却这样做了:

declare @RetVal int  
EXEC @RetVal = yourSPName  

那么@RetVal的值为0。

如果出现错误,则 @RetVal 将是非零的值,例如,如果您的 sp 唯一执行的操作是“SELECT 1/0”,则 @RetVal 将为 -6。

尝试一下看看

我的问题是这些返回值是什么意思?它们一定有一定的逻辑意义!

最佳答案

如果您有一个具有显式返回值的 RETURN 语句,那么这当然就是返回值。

但如果没有RETURN语句,但执行过程中发生错误,则返回值为10减去错误的严重级别。除以零是第 16 级,因此返回值为 -6。权限错误典型级别为 14,因此返回值为 -4。

正如您可能猜到的那样,这并不是很有用,但是:0 表示成功,其他所有内容都是错误。

关于sql - 出错时从存储过程返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1035789/

相关文章:

python - PYODBC:无法通过 SQL 查询进行迭代

sql-server - 我无法将 Microsoft.SqlServer.Management.Common 添加到我的 ASP.NET MVC 应用程序

mysql - SELECT 匹配多个 WHERE 条件(来自链接表)

mysql - 更改 MySQL 中的列顺序

sql - 重新获得失去的身份值(value)

服务器重启后mysql运行存储过程

mysql - 繁重的存储过程可以等待另一个 SP 完成吗?

mysql - 为MySQL存储过程中的所有表设置默认排序规则

sql - 将 Avg 值除以零时取 0

sql - 左外连接和额外的 where 子句