存储过程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