无法在sql server中获取存储过程的变量结果?

时间:2013-04-25 10:34:47

标签: sql sql-server sql-server-2008 variables sql-server-2008-r2

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

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

这是最后的第3级:

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

我只是粘贴了一个例子,但实际上我的代码阅读起来很复杂,所以我以一种更简单的方式实现它,这样每个人都可以轻松地理解它,

现在我的问题是什么: 每当我执行“ proc_test3 ”时我得到@ Outputvalue = 0,请帮助我以便我可以从这个问题中解脱出来,如果我以某种错误的方式做事情请告诉我正确的方法,请帮我解决问题。

1 个答案:

答案 0 :(得分: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