SQL中获得EXEC后面的sql语句或者存储过程的返回值的方法
来源:互联网 发布:wp embed.min.js 编辑:程序博客网 时间:2024/05/19 22:55
前言:在数据库程序开发的过程中,我们经常会碰到利用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
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
(
@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
exec ProTest @name='1',@money=@m output --一定要注名是output
就这么简单,我们就获得了返回值,然后就可以利用它了
呵呵。。。这是我在做项目时碰到的情况时的解决办法(当然可能还有其他办法)。。。希望对您有帮助。。。
- SQL中获得EXEC后面的sql语句或者存储过程的返回值的方法
- SQL中获得EXEC后面的sql语句或者存储过程的返回值的方法
- [转]SQL Server中获得EXEC后面的sql语句或者存储过程的返回值的方法
- SQL Server中获得EXEC后面的sql语句或者存储过程的返回值的方法
- SQL Server中获得EXEC后面的sql语句或者存储过程的返回值的方法
- SQL Server中获得EXEC后面的sql语句或者存储过程的返
- SQL中获得EXEC后面的sql语句或返回值的方法
- SQL中获得EXEC后面的sql语句或返回值的方法
- SQL 中EXEC 后面 执行 存储过程 和 语句 的区别
- 用SQL语句获得一个存储过程返回的表
- 获得SQL-server存储过程的返回值
- C#获得sql存储过程return返回的值和返回参数返回的值
- SQL的存储过程实例返回值
- SQL Server存储过程的返回值
- ASP.NET结合Sql Server数据库如何获得存储过程的返回值进行操作
- 获得存储过程返回值的方法(return的值)
- 破解加密的Sql存储过程 exec sp_decrypt '过程名称'
- 存储过程的三种返回值与其获得方法
- 091126周四
- 不错的博客
- 电子五所复试
- 读取 XML类 (XmlHelper)
- jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解
- SQL中获得EXEC后面的sql语句或者存储过程的返回值的方法
- Cindy3.x源码分析
- Believe Opensource -- the Major Computer Science and Technology students
- 建立aiCache的drupal测试环境
- Struts2使用validation.xml验证时,如何显示字段的标签(未解决)
- 搜集到的petri nets资料
- Struts2 多个文件上传和下载(支持中文文件名)
- REST 软件架构风格学习笔记
- 中国离合器供应网案例分析