SQL中获得EXEC后面的sql语句或返回值的方法_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

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

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:语句返回方法面的
黑客防线网安网讯:前言:在数据库程序开发的过程中,我们经常会碰到利用EXEC来执行一段需要返回某些值的sql语句(通常是构造动态sql语句时使用),或者在一个存储过程中利用EXEC调用另一个有返回值的存储过程(...

前言:在数据库程序开发的过程中,我们经常会碰到利用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

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

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-10007-1.html
网站维护教程更新时间:2012-03-21 02:28:45  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer