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

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

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

在数据库程序开发过程中,我们经常会遇到使用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。

就这么简单,我们得到返回值。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQL中获得EXEC后面的sql语句或返回值的方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情