网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Sql Server2005登录失败.
.一次大批量数据备份和导入工作.
.一个有关SQL Server连接的问题.
.讲解SQL Server2005数据项的分拆.
.将数据库直接备份到网络上其它计.
.sqlplus命令的使用大全.
.Microsoft SQL Server事务日志的.
.SQL Server 2000的数据转换服务(.
.诊断全局错误时如何在系统级进行.
.SQL Server数据库sa密码相关问题.
.SQL Server编写存储过程小工具(二.
.SQL语句性能调整原则.
.SQL Server数据库文件恢复技术.
.使用VS 2005和SQL Server 2005创.
.MSSQLServer2000的排序功能原来这.
.用SQL SERVER记录站点日志.
.sql server日志文件总结及日志满.
.sql查询like操作数剖析.
.经常用到的交叉表问题,一般用动态.
.Sql server 提示挂起问题.

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

发表日期:2008-7-11


前言:在数据库程序开发的过程中,我们经常会碰到利用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导出表到EXCEL文件的存储过程 人气:1790
下一篇:实例讲解实现SQL下的字符串拆分具体方法 人气:567
浏览全部sql server的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐