求助:如何在存储过程中获得其调用的另一个存储过程所返回的参数

sam51 2005-10-26 05:39:44
有两个存储过程:

proc A @a1 char(10),@a2 char(20) output
...

proc B @b1 int,@b2 char(20) output
...

如果这样调用:
proc A @a1 char(10),@a2 char(20) output
begin
...
exec B 99,@a2
...
end

为何这样调用不能得到B中的@b2的内容呢?

应该如何实现呢?高手赐教啊:D
...全文
216 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huang2005 2005-11-03
  • 打赏
  • 举报
回复
顶~~~~~
zxbyhcsdn 2005-10-27
  • 打赏
  • 举报
回复
>接受存储过程的输出参数的值到T-sql的变量

1.先写一个存储过程,带有一个输出参数

--//测试输出参数的存储过程
CREATE PROCEDURE OutPramGet
@prmIn varchar(16), --输入
@prmOut varchar(16) out --输出
AS
set @prmOut=@prmIn+'--'
GO

2.在Sqlserver的查询分析器中写如下代码来取得输出参数

declare @tnnd varchar(16)
exec OutPramGet 'aa',@tnnd out
print @tnnd

--一下是Print的结果-----------

aa--
vivianfdlpw 2005-10-26
  • 打赏
  • 举报
回复
exec B 99,@testa2
==========>
exec B 99,@testa2 output
sam51 2005-10-26
  • 打赏
  • 举报
回复
我做了测试,在B中@b2的付值没有问题,可是输出就是不行,我用程序调用可以,但是在查询分析器中不行,很不解

declare @testa2 char(20)
select @testa2='my'
exec B 99,@testa2
select @testa2

最终还是显示@testa2=my,而不是B中返回的结果,为什么呢?
QQMagicer 2005-10-26
  • 打赏
  • 举报
回复
--楼上的太快了吧
--lz照着来吧,如果不行,试试下面的
proc A @a1 char(10),@a2 char(20) output
begin
...
declare @tmp char(20)
exec B 99, @tmp output
select @a2 = @tmp

...
end
zlp321002 2005-10-26
  • 打赏
  • 举报
回复
--调用应该是可以的
proc A @a1 char(10),@a2 char(20) output
begin
...
exec B 99,@a2 output --注明输出

select @a2 --测试是否有结果!!
...
end

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧