第一个存储过程调用第二个存储过程,要求最终只返回第一个存储过程的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