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