相关疑难解决方法(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返回码-6,这是什么意思?

我有一个没有问题的存储过程,返回代码是0.在某些情况下,我RAISERROR用户定义的错误(> 50000).在这些情况下,回报是-6.我只是好奇,-6是什么意思?我没有在程序中设置返回代码,因此这个数字是SQL Server(系统)生成的.

我发现这句话:

这些负数是否有任何意义,有点难以辨别.过去是这样的,返回值-1到-99是为系统生成的返回值保留的,而联机丛书为早期版本的SQL Server指定了值-1到-14的含义.但是,适用于SQL 2000的联机丛书对任何此类预留都保持沉默,并不解释-1到-14的含义.

有谁知道这些返回码的"隐藏"含义?

我正在使用SQL Server 2008 R2.

c# stored-procedures return-value sql-server-2008

5
推荐指数
1
解决办法
7663
查看次数

在TSQL存储过程中返回单个值最好的是:RETURN还是OUTPUT?

我有一个小的存储过程,需要返回记录计数(单个值).有什么好用的?A RETURN返回结果或OUTPUT参数以返回结果?

我正在使用C#/ .Net与SQL服务器"交谈".

t-sql sql-server sql-server-2005 return

3
推荐指数
1
解决办法
1335
查看次数

TSQL - 当sp不包含return时从sp返回值

我有一个由另一个存储过程调用的存储过程

ALTER PROCEDURE [dbo].[usp_Test] 
AS
begin
declare @errorCode int
declare @lastIdentity int
select @errorCode = @@ERROR
    if @errorCode=0
    begin
        update Vehicle  set model='1996----------'
            where Make='MERC'
        select @errorCode = @@ERROR
        select @lastIdentity = @@IDENTITY
    end 

print 'usp_test lastIdentity='  + convert(varchar(10), isnull(@lastIdentity,0)) 
print 'usp_test errorCode=' + convert(varchar(10), @errorCode) 

end
Run Code Online (Sandbox Code Playgroud)

如果我像这样调用存储过程

declare @RetVal int

exec @RetVal=usp_Test

print 'return value is ' + convert(varchar(10), @RetVal)
Run Code Online (Sandbox Code Playgroud)

我收到以下消息

消息8152,级别16,状态14,过程usp_Test,行14字符串或二进制数据将被截断.该语句已终止.usp_test lastIdentity = 0 usp_test errorCode = 8152返回值为-6

通过在结尾处添加RETURN 0并在select @errorCode之后添加RETURN @errorCode ...我将有一个很好的清除方式来返回错误并随后处理它.我很惊讶,如果没有任何RETURN,我会得到-6的返回值.任何人都可以解释为什么会这样吗?

sql t-sql

0
推荐指数
1
解决办法
3259
查看次数