【问题标题】:Not able to get the stored procedure's result in variable in sql server? [duplicate]无法在 sql server 中获取存储过程的结果? [复制]
【发布时间】:2013-04-25 10:34:47
【问题描述】:

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

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,请帮助我,以便我可以摆脱这个问题,如果我做错了事情,请告诉我正确的方法,请帮我解决问题。

【问题讨论】:

  • @GSerg hmm 好的,但是如何克服这个问题,请您向我解释一下这个答案或者我现在该如何解决这个问题,.....请指导我

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


【解决方案1】:

尝试使用 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

【讨论】:

  • @Raman,如果您可以取消删除此问题:stackoverflow.com/questions/16211786/…,我会尽力帮助您。
  • 好的..这是我的初级开发人员问的..我不知道他是否详细说明了。顺便说一句,我要他取消删除问题
  • 不客气@raman。
猜你喜欢
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 2011-08-31
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多