我有一个存储过程的层次结构,如下所示:
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,请帮助我以便我可以从这个问题中解脱出来,如果我以某种错误的方式做事情请告诉我正确的方法,请帮我解决问题。
答案 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