各位大哥,如何在一个存储过程里面调用另一个存储过程,并且利用它的返回值呢,谢谢,急!

jupiterxxu 2004-11-17 11:44:01
各位大哥,如何在一个存储过程里面调用另一个存储过程,并且利用它的返回值呢,谢谢,急!
...全文
244 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
631799 2005-06-07
  • 打赏
  • 举报
回复
----------------------存储过程共有三种返回值-------------------
/*(一)、参数返回值@parm2;
(二)、过程返回值return 100;
(三)、数据集返回值select * from table1 where age = @parm1
请问,如何得到三类返回值?
*/
create table table1(
name varchar(30),
age integer,
primary key(name, age)
)

create procedure proc1
@parm1 integer,
@parm2 varchar(30) output
as
select @parm2 = 'zhongguo'
select * from table1 where age = @parm1
return 100

--(一)、参数返回值@parm2;
declare @re varchar(30)
exec proc1 1,@re out
select 返回结果=@re

--(二)、过程返回值return 100;
declare @re int,@parm2 varchar(30)
exec @re=proc1 1,@parm2 out
select 返回结果=@re

--(三)、数据集返回值select * from table1 where age = @parm1
--定义返回结果保存的临时表(因为是返回记录集,所以要用临时表)
--调用返回结果
--declare @re varchar(30)
--insert #re exec proc1 1,@re out
select * into #re from OPENROWSET('SQLOLEDB',
'SERVER=zhou;uid=sa;pwd=zhou;Database=pubs','SET FMTONLY OFF;SET NOCOUNT ON declare @re varchar(30) exec proc1 ''1'',@re out') as a
--显示结果
select * from #re
--处理完成后删除临时表
drop table #re

ghchen 2005-06-07
  • 打赏
  • 举报
回复
学习
lxd99423 2004-11-18
  • 打赏
  • 举报
回复
--例如:
--建立存储过程
create procedure tt
@qq char(2) output --参数后加上output
AS
set @qq='OK'
go

declare @kk char(2)

set @kk='pp'
exec tt @kk output --调用时也加上output
select @kk --@kk返回'OK'

drop procedure tt

laoQ 2004-11-18
  • 打赏
  • 举报
回复
嗯,,
学习中,
原来这样子的,,

UP
davorsuker39 2004-11-18
  • 打赏
  • 举报
回复
学习
fhercules 2004-11-18
  • 打赏
  • 举报
回复
学习下
double22822 2004-11-18
  • 打赏
  • 举报
回复
在外部存储过程中调用另外的存储过程:
declare @vra datatype
exec pro_name @pram1,output...(声明为output 的在另一个存储过程中也必须为output,另外注意参数的顺序和类型匹配)
--一般要判断一下是否成功
if @@error = 0--成功
begin
--作处理
select @vra as @pram1--将返回值赋给@vra
end
else
begin
--作处理
end



txlicenhe 2004-11-18
  • 打赏
  • 举报
回复
返回值是指 return 后面的值吧。

--示例
create proc p_1
as
....
if ...
return 0
else
return -1
go

--调用的存储过程
create proc p_2
as
declare @ret int
exec @ret = p_1
select @ret
go
zjcxc 元老 2004-11-18
  • 打赏
  • 举报
回复
--如果是返回结果集的

--示例
create proc p_1
as
select id,name from sysobjects
go

--调用的存储过程
create proc p_2
as
create table #t(id int,name sysname)
insert #t exec p_1
select * from #t
go
mgsray 2004-11-17
  • 打赏
  • 举报
回复
--p_2(@value varchar(10) output)
create proc p_1 as
declare @value varchar(10)
exec p_2 @value output--这里就是把存储过程p_2的输出值赋给@value
...

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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