存储过程之间相互调用

本文介绍在 SQL Server 中如何创建并调用存储过程,包括一个存储过程如何调用另一个存储过程的具体实现方式。通过示例代码展示了不同情况下存储过程参数的设置与传递方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

callzjy的专栏

总经理吗?经常性地总结性地理一理!
原创 - 59,翻译 - 0,转载 - 0, 点击 - 20338, 评论 - 15, trackbacks - 0

if object_id('pro1') is not null
      drop proc pro1
if object_id('pro2') is not null
      drop proc pro2
if object_id('tbtest') is not null
      drop table tbtest
GO
create table tbtest(id int identity(1,1),name varchar(20))
insert tbtest(name)
select 'x' union all
select 'myname' union all
select 'myname' union all
select 'yourname' union all
select 'myname'
select * from tbtest
GO
----创建存储过程1
create proc pro1 @a varchar(16) = null,@returnvalue int=null output
as
      select @returnvalue = max(id) from tbtest where name = @a
GO
----创建存储过程2(在该存储过程中调用存储过程1)
create proc pro2 @cmd nvarchar(4000)
as
declare @r int
      set @r = 0
      exec sp_executesql @cmd,N'@r int output',@r output
      select @r
GO

----调用存储过程2
declare @cmd Nvarchar(4000)
--set @cmd = 'exec pro1 ''myname'',@r output'
set @cmd = 'exec pro1 @a=''myname'',@returnvalue=@r output'--效果同上一条语句
exec pro2 @cmd

----清除测试环境
drop proc pro1,pro2
drop table tbtest 

需要注意的地方是@cmd声明成nvarchar(4000)

--再举一例
if object_id('prc11') is not null
      drop proc prc11
go

CREATE PROC PRC11(
@a varchar(16)=null,
@returnvalue int=null output
)
AS BEGIN
    SET @returnvalue = LEN(@A) + 2234
END
go

declare @cmd Nvarchar(1000),@r int
set @r = 0
set @cmd = 'exec PRC11 @a=''myname11'',@returnvalue=@r output'
exec sp_executesql @cmd ,N'@r int output',@r output
SELECT @R

drop proc prc11



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1365283


[ 收藏到我的网摘]   你懂事吗?董事长!发表于 2006年11月03日 20:03:06
href="http://blog.youkuaiyun.com/callzjy/Services/Pingback.aspx" rel="pingback" />
相关文章:
href="http://tagegg.youkuaiyun.com/css/csdn_zhaigao_style.css" type="text/css" rel="stylesheet" />

权威的黑皮书更新了
与微软技术同步更新的技术图书microsoft

book.youkuaiyun.com/

微软新技术全掌握
成为程序设计高手的捷径microsoft

book.youkuaiyun.com/

网管员也能如此轻松
现在你就是DBA高手sql server

book.youkuaiyun.com/

Csdn提供的广告 Csdn  Tag
没有评论。

发表评论

   
大名
网址 
评论 
验证码 VerifyCode
id="myframe" border="0" name="myframe" src="http://www.youkuaiyun.com/ggmm/dd333.htm" frameborder="no" width="0" scrolling="no" height="0">
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值