存储过程输出参数问题 为什么输出的老是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 应该还是程序调用的有问题。