我在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.
试试看吧
我的问题是这些返回值是什么意思?他们必须具有一定的逻辑意义!
我有一个没有问题的存储过程,返回代码是0.在某些情况下,我RAISERROR用户定义的错误(> 50000).在这些情况下,回报是-6.我只是好奇,-6是什么意思?我没有在程序中设置返回代码,因此这个数字是SQL Server(系统)生成的.
我发现这句话:
这些负数是否有任何意义,有点难以辨别.过去是这样的,返回值-1到-99是为系统生成的返回值保留的,而联机丛书为早期版本的SQL Server指定了值-1到-14的含义.但是,适用于SQL 2000的联机丛书对任何此类预留都保持沉默,并不解释-1到-14的含义.
有谁知道这些返回码的"隐藏"含义?
我正在使用SQL Server 2008 R2.
我有一个小的存储过程,需要返回记录计数(单个值).有什么好用的?A RETURN返回结果或OUTPUT参数以返回结果?
我正在使用C#/ .Net与SQL服务器"交谈".
我有一个由另一个存储过程调用的存储过程
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的返回值.任何人都可以解释为什么会这样吗?