| 導購 | 订阅 | 在线投稿
分享
 
 
 

SQL中獲得EXEC後面的sql語句或返回值的方法

來源:互聯網  2008-07-12 07:37:36  評論

前言:在數據庫程序開發的過程中,我們經常會碰到利用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

上面的@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

這個只是一個簡單的示例,這個存儲過程返回的是@money 這個參數的值,那麽當我們在另外一個存儲過程中調用此存儲過程的時候如何獲取這個參數呢,方法如下:

declare @m int ---用來接收返回值的變量

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

就這麽簡單,我們就獲得了返回值。

前言:在數據庫程序開發的過程中,我們經常會碰到利用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 [url=mailto:zc=]zc='+@zc+'[/url] and [url=mailto:xq=]xq='+@xq+'[/url] and [url=mailto:T]T'+@time+'=''[/url]否'') 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 這個只是一個簡單的示例,這個存儲過程返回的是@money 這個參數的值,那麽當我們在另外一個存儲過程中調用此存儲過程的時候如何獲取這個參數呢,方法如下: declare @m int ---用來接收返回值的變量 exec ProTest @name='1',@money=@m output --一定要注名是output 就這麽簡單,我們就獲得了返回值。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有