读书人

存储过程输出参数有关问题 为什么输出

发布时间: 2012-01-28 22:06:13 作者: rapoo

存储过程输出参数问题 为什么输出的老是NULL值 ?
存储过程代码如下:
CREATE PROCEDURE UP_Production_Authenticate
@sOrdNo nvarchar(100),
@sResult nvarchar(30) output
AS
if not exists(select * from tblContract where sOrdNo=@sOrdNo)
begin
set @sResult= 'yes '
end
else
begin
set @sResult= 'no '
end
return

执行过后得出@sResult值不管怎样都是NULL值,用跟踪器跟踪的代码为:
declare @P1 bit
set @P1=NULL
exec sp_executesql N 'UP_Production_Authenticate ', N '@sOrdNo nvarchar(100),@sResult bit output ', @sOrdNo = N '9042 ', @sResult = @P1 output
select @P1

为什么系统会自动给@P1赋个NULL值呢?

[解决办法]
CREATE PROCEDURE UP_Production_Authenticate
@sOrdNo nvarchar(100),
@sResult nvarchar(30) output
AS
set @sResult = ' ' --- 先给个初始值
if not exists(select * from tblContract where sOrdNo=@sOrdNo)
begin
set @sResult= 'yes '
end
else
begin
set @sResult= 'no '
end
return
[解决办法]
执行的时候这样写看看
declare @P1 nvarchar(30)
set @P1=NULL
exec sp_executesql N 'UP_Production_Authenticate ', N '@sOrdNo nvarchar(100),@sResult nvarchar(30) output ', @sOrdNo = N '9042 ', @sResult = @P1 output
select @P1


[解决办法]
代码是正确的.如果返回的是NULL,只可能是你调用有错或那个if根本就没执行.
实际情况.仔细找找你实际的存储过程.
[解决办法]
存储过程没有问题,不加return 也不会反回NUll 应该还是程序调用的有问题。

读书人网 >SQL Server

热点推荐