赛迪网 > IT技术 数据库 > SQL Server
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

SQL中获得EXEC后面的sql语句或返回值的方法

发布时间:2008.07.11 09:00     来源:赛迪网    作者:Alizze

【赛迪网-IT技术报道】前言:在数据库程序开发的过程中,我们经常会碰到利用EXEC来执行一段需要返回某些值的sql语句(通常是构造动态sql语句时使用),或者在一个存储过程中利用EXEC调用另一个有返回值的存储过程(必须获得返回值),那么如何获得这些返回值呢?

1.EXEC执行sql语句的情况

declare @rsql varchar(250)

declare @csql varchar(300)

declare @rc nvarchar(500)

declare @cstucount int

declare @ccount int

set @rsql='(select Classroom_id from EA_RoomTime where zc='+@zc+' and xq='+@xq+' and T'+@time+'=''否'') and ClassroomType=''1'''

--exec(@rsql)

set @csql='select @a=sum(teststucount),@b=sum(classcount) from EA_ClassRoom where classroom_id in '

set @rc=@csql+@rsql

exec sp_executesql @rc,N'@a int output,@b int output',@cstucount output,@ccount output--将exec的结果放入变量中的做法

--select @csql+@rsql

--select @cstucount

上面的@rc这个sql语句的功能是找出特定时间段里所有有空的教室数量以及这些教室所能容纳的学生人数,因为涉及到动态的sql语句(@csql这句里条件中有一个列名是动态变化的)的构造,所以要放在exec里执行,但是同时我又要返回2个结果,所以执行时的代码为:

exec sp_executesql @rc,N'@a int output,@b int output',@cstucount output,@ccount output--将exec的结果放入变量中的做法

这样就将返回值放到了,@cstucount,@ccount两个变量中,得到了我们想要的结果。

2.exec执行带返回值的存储过程的情况

我们来看一个简单的存储过程:

create procedure ProTest

(

@name varchar(10),

@money int output

)

as

begin

if(@name='1')

set @money=1000

else

set @money=2000

end

这个只是一个简单的示例,这个存储过程返回的是@money 这个参数的值,那么当我们在另外一个存储过程中调用此存储过程的时候如何获取这个参数呢,方法如下:

declare @m int ---用来接收返回值的变量

exec ProTest @name='1',@money=@m output --一定要注名是output

就这么简单,我们就获得了返回值。

(责任编辑:卢兆林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 微软计划八月份正式发布SQL Server 2008 (07-10) · 用一条SQL实现:一行多个字段数据的最大值 (07-09)
· 新型自动化SQL注入攻击引发大规模网页挂马 (06-10) · SQL注入攻击成为新威胁将挑战操作系统安全 (05-26)
· 循序渐进讲解SQL查询语句的高级应用技巧 (05-05) · 标准SQL规范中定义的四个事务隔离级别 (04-29)
· 微软:Web服务器攻击与IIS等软件缺陷无关 (04-28) · 利用SQL语句对不同数据库进行高效果分页 (04-27)
· SQL指令植入式攻击的危害及其防范措施 (04-24) · 怎样才能导出SQL所有用户表的字段信息 (04-23)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 移动信息化市场方兴未艾 企业呼唤标准出台
· 如何把握企业价值差异 避免CRM与SCM脱节
· 齐看四大厂商的SaaS动态 ERP案例分析
· 通方期货CRM解决方案 方正电子公文系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统