首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>SQL server>资讯:SQL中获得EXEC后面的sql语句或返回值的方法

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

www.jz123.cn  2011-03-29   来源:   站长家园会员投稿    南京互易中国    我要投递新闻

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数据库服务器高性能设置 下一篇:SQL Server开发过程中的的常见问题总结

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图