相关疑难解决方法(0)

错误时从存储过程返回值

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

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


必须有一些标准

例如

declare @RetVal int  
EXEC @RetVal = stpTest  
select @RetVal
Run Code Online (Sandbox Code Playgroud)

其中stpTest是"SELECT 1/0"返回-6.

-6必须意味着什么!


返回-4的sp只有UPDATE和SELECT INTO语句.

在任何时候它都没有'SELECT -4'所以我怎样才能"找出-4特定存储过程中的含义"?

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


如果你有一个不返回任何内容的sp,即它没有任何select语句,你可以:

declare @RetVal int  
EXEC @RetVal = yourSPName  
Run Code Online (Sandbox Code Playgroud)

然后@RetVal的值为0.

如果有错误,那么@RetVal将是一个除零之外的值,例如,如果sp的唯一作用是"SELECT 1/0",那么@RetVal将为-6.

试试看吧

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

sql sql-server stored-procedures return-value

23
推荐指数
3
解决办法
5万
查看次数

SQL Server存储过程返回代码奇怪

调用此代码的客户端受到限制,只能处理来自存储过程的返回码.因此,我们将通常的合同修改为RETURN -1错误,默认RETURN 0无错误

如果代码命中内部catch块,则RETURN代码默认为-4而不是0

有谁知道这来自哪里?供参考

干杯gbn

IF OBJECT_ID('dbo.foo') IS NOT NULL DROP TABLE dbo.foo
GO
CREATE TABLE dbo.foo (
    KeyCol  char(12) NOT NULL,
    ValueCol xml NOT NULL,
    Comment varchar(1000) NULL,
    CONSTRAINT PK_foo PRIMARY KEY CLUSTERED (KeyCol)
)
GO

IF OBJECT_ID('dbo.bar') IS NOT NULL DROP PROCEDURE dbo.bar
GO
CREATE PROCEDURE dbo.bar
    @Key char(12),
    @Value xml,
    @Comment varchar(1000)
AS
SET NOCOUNT ON
DECLARE @StartTranCount tinyint;
BEGIN TRY
    SELECT @StartTranCount = @@TRANCOUNT;

    IF @StartTranCount = 0 BEGIN …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server error-handling stored-procedures

8
推荐指数
1
解决办法
5466
查看次数