2

我有一个存储过程的层次结构,如下所示:

1
 2
  3

现在我正在做的是:首先我展示的是第一级 sp 。

Create proc proc_test3
(
@Id uniqueidentifier,
@value varchar(100)
)
as
declare @Outputvalue varchar(100)
if @Id='2'
begin
exec @Outputvalue= proc_test2 @Id @value
select @Outputvalue
end

这是第二级:

Create proc proc_test2
(
@Id uniqueidentifier,
@value varchar(100)
)
as
declare @Outputvalue varchar(100)
if @Id='2'
begin
exec @Outputvalue= proc_test1 @Id @value
select @Outputvalue
end

这是最后的第三级:

Create proc proc_test1
(
@Id uniqueidentifier,
@value varchar(100)
)
as
update tblsample set value=@value where id=@Id
select 1

我只粘贴了一个示例,但实际上我的代码阅读起来非常复杂,因此我以一些更简单的方式实现了它,以便每个人都可以轻松理解它,

现在我的问题是什么:每次我在执行“ proc_test3 ”时得到@Outputvalue=0,请帮助我,这样我就可以摆脱这个问题,如果我做错了事情,请告诉我正确的方法,请帮我解决问题。

4

1 回答 1

0

尝试使用 RETURN 构造 -

CREATE PROC proc_test3
(
    @Id UNIQUEIDENTIFIER,
    @value VARCHAR(100)
)
AS BEGIN

    IF @Id = '2' BEGIN

        DECLARE @Outputvalue VARCHAR(100)
        EXEC @Outputvalue = dbo.proc_test2 @Id, @value
        RETURN @Outputvalue

    END

END


CREATE PROC proc_test2
(
    @Id UNIQUEIDENTIFIER,
    @value VARCHAR(100)
)
AS BEGIN

    IF @Id='2' BEGIN

        DECLARE @Outputvalue VARCHAR(100)
        EXEC @Outputvalue= proc_test1 @Id, @value
        RETURN @Outputvalue

    END

END


CREATE PROC proc_test1
(
    @Id UNIQUEIDENTIFIER,
    @value VARCHAR(100)
)
AS BEGIN

    UPDATE tblsample 
    SET value=@value 
    WHERE id=@Id

    RETURN 1

END
于 2013-04-25T10:42:28.700 回答