当前位置: 代码迷 >> Sql Server >> SQL2005只需要返回第一个存储过程值有关问题
  详细解决方案

SQL2005只需要返回第一个存储过程值有关问题

热度:44   发布时间:2016-04-24 08:57:29.0
SQL2005只需要返回第一个存储过程值问题
第一个存储过程调用第二个存储过程,要求最终只返回第一个存储过程的output值
执行以下存储过程后出现2个返回值,第一个是内部调用存储过程值,如(1000201,1003340),第一个返回值即是我需要的值,即“OK”,因内部调用的存储过程sp_getID 为固定内容,不能修改该存储过程内容,如何才能在执行存储过程X_P_DO1后只返回“OK”值,即@msg值?

create PROCEDURE [dbo].[X_P_DO1] (
@vouchid nvarchar(20),
@msg nvarchar(50) output --返回信息

declare @no int,@autoid int,@cnt int
declare @ifatherid int,@ichildid int
set @no=1
set @cnt=5
while @no<=@cnt
begin
  declare @p5 int  declare @p6 int exec sp_getID '00','666','Sell',@no,@p5 output,@p6 output select @p5, @p6
  set @ifatherid=@p5
  set @ichildid=@p6
  insert into table1 (f1,f2,f3,f4) values (@ifatherid,@ichildid,@no,@vouchid)
set @no=@no+1
end
set @msg='OK'



------解决思路----------------------
把 select @p5, @p6 去掉不就行了。
------解决思路----------------------
create PROCEDURE [dbo].[X_P_DO1] (
@vouchid  nvarchar(20),
@msg      nvarchar(50) output --返回信息
)
AS
BEGIN
declare 
@no int,
@autoid int,
@cnt int,
@ifatherid int,
@ichildid int
set @no=1
set @cnt=5
while @no<=@cnt
begin
declare 
@p5 int,
@p6 int
exec sp_getID '00','666','Sell',@no,@p5 output,@p6 output
set @ifatherid=@p5
set @ichildid=@p6
insert into table1(f1,f2,f3,f4) 
values (@ifatherid,@ichildid,@no,@vouchid)
set @no=@no+1
end
set @msg='OK'
END
  相关解决方案