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 @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

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

關于EJB查詢返回值的解決方法
多少天來,爲此問題寢食難安,我曾發誓若我能解決這個問題就要把它貼滿各大BBS,如今得償所願。csdn的java版還需努力,最好分一下,如:javaunion相信很多人都有如此之困惑,得此解決方法不敢獨享,公之于衆,以利後...查看完整版>>關于EJB查詢返回值的解決方法
 
獲得SQL-server存儲過程的返回值
///<summary>///c#code,獲得SQL-server存儲過程的返回值///<summary>SqlParameter[] sp = new SqlParameter; sp=new SqlParameter("@Name",SqlDbType.VarChar); sp.Value=this.TextName.Text; sp...查看完整版>>獲得SQL-server存儲過程的返回值
 
返回UPDATE SQL語句所影響的行數的方法
用如下方法可以直接得到影響的行數:<%dim conndim sqldim lngrecssql="update table1 set field1='good'"set conn=server.createobject("adodb.connection")conn.open dsnconn.execute sql,lngrecsconn.close:se...查看完整版>>返回UPDATE SQL語句所影響的行數的方法
 
獲得應用程序所執行的SQL語句
  我們在確定應用程序性能的時候,更多地會關注其中SQL語句的執行情況。通常應用的性能瓶頸會在數據庫這邊,因此數據庫的sql語句是我們優化的重點。   ...查看完整版>>獲得應用程序所執行的SQL語句
 
獲得應用程序所執行的SQL語句
  我們在確定應用程序性能的時候,更多地會關注其中SQL語句的執行情況。通常應用的性能瓶頸會在數據庫這邊,因此數據庫的sql語句是我們優化的重點。  要對sql語句進行優化,首先要知道應用程序執行了哪些SQL語句...查看完整版>>獲得應用程序所執行的SQL語句
 
獲得所有表信息的SQL語句
exec sp_MSForEachTable @precommand=N'create table ##(id int identity,表名 sysname,字段數 int,記錄數 int,保留空間 Nvarchar(10),使用空間 varchar(10),索引使用空間 varchar(10),未用空間 varchar(10))',@comm...查看完整版>>獲得所有表信息的SQL語句
 
獲得hibernate的sql語句(2.1.6)
獲得hibernate的sql語句我們知道hibernate會將hql解析成sql,也許在某些時候,我們需要這些sql。不過hibernate的接口中沒有公開的api,看來我們得自己行動了。1.開始前的工作 1.1 知道如何閱讀javadoc api 1.2 知道...查看完整版>>獲得hibernate的sql語句(2.1.6)
 
如何獲得應用程序所執行的SQL語句
版權聲明:如有轉載請求,請注明出處: 我們在確定應用程序性能的時候,更多地會關注其中SQL語句的執行情況。通常應用的性能瓶頸會在數據庫這邊,因此數據庫的sql語句是我們優化的重點。 要對sql語句進...查看完整版>>如何獲得應用程序所執行的SQL語句
 
優化數據庫的方法及SQL語句優化的原則
優化數據庫的方法: 1、關鍵字段建立索引。 2、使用存儲過程,它使SQL變得更加靈活和高效。 3、備份數據庫和清除垃圾數據。 4、SQL語句語法的優化。(可以用Sybase的SQL Expert,可惜我沒找到unexpired的 序列號) 5...查看完整版>>優化數據庫的方法及SQL語句優化的原則
 
 
回到王朝網路移動版首頁