我在 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/