SQL server 動態(tài)查詢的實際操作步驟
此文章主要是向大家講述的是SQL server 動態(tài)查詢,與獲取想得到的返回值的結(jié)果,在編寫sql語句或是存儲過程的實際操作過程中,一般的情況下都會遇到語句中表名或某一字段名不確定,要根據(jù)條件來。
這時,我們可考慮用SQL 提供的sp_executesql 函數(shù),,他可執(zhí)行動態(tài)的修改,刪除,查詢功能,至于此函數(shù)的詳細(xì)解釋可到sql幫助文檔中去查看,下面我將舉一個SQL server 動態(tài)查詢的列子,包括表名及想查詢的字段均不確定:
- tab:
- (ID int) (A numeric(9,2)) (B numeric(9,2))
- 1 20.30 33.12
- 2 34.32 22.66
- 3 45.54 99.19
完成任務(wù):
在不確定表名,及查詢字段的情況下,根據(jù)傳入的表名及字段及查詢條件,獲得對應(yīng)返回結(jié)果:
1.seq條件
2.字段名稱(A或B)
3.表名
要求函數(shù)返回值類型為numeric(9,2), 列如根據(jù)輸入?yún)?shù)2取對應(yīng)字段的值返回
做法如下:
- declare @tab varchar(10), @rowname varchar(10) ,@seq int
- declare @sql Nvarchar(1000)
- declare @v numeric(9,2)
- set @rowname='A';
- set @seq=2 ;
- set @tab='tab';
- set @sql='select @a='+@rowname+' from '+@tab+' where id='+rtrim(@seq)
- exec sp_executesql @sql,N'@a numeric(9,2) output',@v output
- select @v
結(jié)果
34.32
提醒:
對于動態(tài)表名及字段使用非常簡單,但獲取結(jié)果使用動態(tài)語句是有一定規(guī)則的,如上面的列子,需要把表名聲明成Nvarchar的,然后執(zhí)行動態(tài)語句時,聲明其動態(tài)語句中變量前也要加N ,如N'@a
- numeric(9,2) output'
以上的相關(guān)內(nèi)容就是對SQL server 動態(tài)查詢的介紹,望你能有所收獲。
【編輯推薦】
- SQL Server數(shù)據(jù)轉(zhuǎn)換服務(wù)的妙招之一
- SQL Server數(shù)據(jù)庫的妙招用法
- SQL Server數(shù)據(jù)轉(zhuǎn)換服務(wù)利用與導(dǎo)入式格式的描述
- 確維護(hù)Sql Server表索引的2個步驟b
- SQL ServerCoalesce的大量使用的具體描述