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

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

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


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


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


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


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


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


create procedure ProTest

(

@name varchar(10),

@money int output

)

as

begin

if(@name='1')

set @money=1000

else

set @money=2000

end

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


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

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

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

猜你喜欢

转载自blog.csdn.net/happycell188/article/details/5487295
今日推荐