软件测试开发技术SQL中获得EXEC后面的sql语句或返回值的方法

发表于:2009-10-15来源:作者:点击数: 标签:软件测试sqlSQLSqlEXEC
软件测试 开发 技术SQL中获得EXEC后面的sql语句或返回值的方法 SQL数据库 关键字:SQL EXEC sql 方法 前言:在数据库程序开发的过程中,我们经常会碰到利用EXEC来执行一段需要返回某些值的sql语句(通常是构造动态sql语句时使用),或者在一个存储过程中利用EXE

软件测试开发技术SQL中获得EXEC后面的sql语句或返回值的方法 SQL数据库

关键字:SQL EXEC sql 方法

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

 

  1.EXEC执行sql语句的情况

 

  declare @rsql varchar(250)

 

  declare @csql varchar(300)

 

  declare @rc nvarchar(500)

 

  declare @cstucount int

 

  declare @clearcase/" target="_blank" >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个结果,所以执行时的代码为:

 

  

原文转自:http://www.ltesting.net