我在SQL Server中编写了一个存储过程,它将返回Bigint
值
alter procedure [dbo].adding
@one bigint,
@two bigint,
@startid bigint output
as
begin
set @startid = @one + @two
return @startid
end
但是在返回值时我得到了一个异常
将表达式转换为数据类型int的算术溢出错误
任何人都可以帮我解决这个问题吗?
提前致谢
注意:上述查询与我正在使用的程序完全相同
更新:
我有一个如下代码
_lookupId = cmdInsert.Parameters.Add("RetVal", SqlDbType.BigInt);
_lookupId.Direction = ParameterDirection.ReturnValue;
_procIn01 = cmdInsert.Parameters.Add("@idCount", SqlDbType.VarChar, 500);
cmdInsert.Parameters["@idCount"].Value = idCount;
_procIn01.Direction = ParameterDirection.Input;
_procIn02 = cmdInsert.Parameters.Add("@requestFrom", SqlDbType.VarChar, 100);
cmdInsert.Parameters["@requestFrom"].Value = clientId;
_procIn02.Direction = ParameterDirection.Input;
_pramOut = cmdInsert.Parameters.Add("@startID", SqlDbType.BigInt);
_pramOut.Direction = ParameterDirection.Output;
cmdInsert.ExecuteScalar();
如果没有返回值,我怎么能将值赋给" RetVal"我的_lookup变量。
答案 0 :(得分:6)
过程返回状态值,该值始终为整数。您只需设置它即可从存储过程返回值:
alter procedure [dbo].adding
-- add the parameters for the stored procedure here
@one bigint,
@two bigint,
@startid bigint output
as
begin
-- set nocount on added to prevent extra result sets from
-- interfering with select statements.
set @startid = @one + @two
end;
使用return
判断存储过程是否成功。
您可以通过以下方式调用此方法:
declare @startid bigint;
exec dbo.adding(1, 2, @startid output);
select @startid;
答案 1 :(得分:1)
发生此错误是因为您的返回但您必须使用set来设置变量或使用select
Set @outputvalue=@val1+@val2
或
Select @outputvalue=@val1+@val2
答案 2 :(得分:1)
Sotred程序返回答案是显示sp成功或不成功的整数
你不能用它来获得big int
号码
如果你想得到一个没有out put parameter
的输出值,那么你可以使用select with out变量,例如,
调用
Select @val1+@val2
现在使用Execute Scalar
命令方法获取输出。