SQL中获得EXEC后面的sql语句或返回值的方法
在数据库程序开发过程中,我们经常会遇到使用EXEC执行一条需要返回值的sql语句(通常在构造动态sql语句时使用),或者在一个存储过程中使用EXEC调用另一个有返回值的存储过程(返回值必须是获取的)。那么我们如何获得这些返回值呢?
1.sql语句的EXEC执行
declare @rsql varchar(250)
declare @csql varchar(300)
声明@rc nvarchar(500)
声明@cstucount int
声明@ ccount int
set @ rsql = '(select classroom _ id from ea _ room time其中ZC ='+@ ZC+'和xq ='+@ xq+'和t'+@ time+'= '否')和ClassroomType=''1 ' ' '
- exec(@rsql)
set @ csql = ' select @ a = sum(teststcount),@ b = sum(class count from EA _ ClassRoom where ClassRoom _ id in '
set @rc=@csql+@rsql
Exec _ Executesql @ RC,n ' @ a intoutput,@ b intoutput ',@ cstucountoutput,@ ccountputput-将exec的结果放入变量中的做法
-选择@csql+@rsql
-选择@cstucount
上面@rc sql语句的作用是找出空的教室数量,以及这些教室在特定时间段内可以容纳的学生数量。因为涉及到动态sql语句的构造(在@csql的条件中有一列名是动态改变的),所以要在exec中执行,但同时我要返回两个结果,所以执行的代码是:
Exec _ Executesql @ RC,n ' @ a intoutput,@ b intoutput ',@ cstucountoutput,@ ccountputput-将exec的结果放入变量中的做法
这样,返回值就放在两个变量@cstucount和@ @ccount中,我们就得到想要的结果了。
2.exec执行带有返回值的存储过程。
让我们看一个简单的存储过程:
创建程序抗议
(
@name varchar(10),
@money int输出
)
如同
开始
if(@name='1 ')
set @money=1000
其他
set @money=2000
目标
这只是一个简单的例子。这个存储过程返回参数@money的值。那么,当我们在另一个存储过程中调用这个存储过程时,如何获得这个参数呢?该方法如下:
Declare @ m int-a一个用于接收返回值的变量
Execprotest @ name = ' 1 ',@ money = @ m output——一定要注意名字是output。
就这么简单,我们得到返回值。
位律师回复
0条评论