日期:2014-05-18  浏览次数:20477 次

存储过程A调用存储过程B,B有2个返回值,一个是参数返回,一个是RETURN返回。蒙了!
RT

存过B
CREATE       proc   usp_B
@Id int,
@Error       int   output
AS
      ...........
      ...........
      if   @@error   =   0
              begin
                  SET   @nCount   =   select   count(1)   from   [Table1]
                  SET   @Error   =   0
              end
      else
                  SET   @Error   =   1
      end
      return   @nCount
GO
在A中,需要得到@Error,来判断是否继续,如果继续,则需要得到@nCount这个参数。

各位帮帮忙,如何才能做到?谢谢了!!!
PS:我在A中Exec   @nCountRow   =   Exec   B   @id,@Error   output
得到的是@Error的值,是正确的,可以进行往下运行。但无法得到return   返回的数值。

------解决方案--------------------
DROP PROC USP_B
GO


CREATE proc usp_B
@Id int,
@Error int output,
@NCOUNT INT OUTPUT
AS

if @@error = 0
begin
select @nCount = count(1) from SYSOBJECTS
SET @Error = 0
end
else
SET @Error = 1

GO


DECLARE
@Error int ,
@NCOUNT INT
EXEC USP_B 1,@ERROR OUTPUT, @NCOUNT OUTPUT
PRINT @ERROR
PRINT @NCOUNT

------解决方案--------------------
@nCountRow变量就是返回值
@Error变量是output值
lz可以用
Exec @nCountRow = Exec B @id,@Error output
select @nCountRow
select @Error
查看这两个值
------解决方案--------------------
@nCount有赋初值吗?
------解决方案--------------------
来迟了~
------解决方案--------------------
SQL语句调用另外一个存储过程,并且获取返回值例子:
USE [OMS_NET]
GO

DECLARE @return_value int,
@sPK varchar(50)

EXEC @return_value = [dbo].[mp_GetPKNo]
@sPK = @sPK OUTPUT

SELECT @sPK as N '@sPK '

SELECT 'Return Value ' = @return_value ----> return返回值

GO