SQL SERVER 動態查詢

iSQlServer發表於2010-09-21
今天做了一個根據動態生成表明來查詢相關結果的儲存過程,由於表名是動態生成,因此使用了SQL Server的動態查詢,函式sp_executesql。寫篇部落格已記錄開發過程中遇到的問題,以備查詢。

需要統計的表是根據規則動態生成,格式如下:

 

因此在這裡考慮使用SQL提供的sp_executesql 函式,它可以執行動態的修改,查詢,刪除功能。該函式官方詳細文件,如下:

Sp_executesql:執行可以多次重複使用或動態生成的 Transact-SQL 語句或批處理。Transact-SQL 語句或批處理可以包含嵌入引數。

語法 :

sp_executesql [ @statement = ] statement

[

    { , [ @params = ] N'@parameter_name data_type [ OUT | OUTPUT ][ ,...n ]' }

    { , [ @param1 = ] 'value1' [ ,...n ] }

]

官方詳細文件:http://technet.microsoft.com/zh-cn/library/ms188001.aspx

完成任務:

在不確定表名的情況下,根據生成表名規則及查詢條件,返回統計結果:

要求函式返回值型別為int,取對應欄位的值返回

做法如下:

declare @AllCount int

declare @exesql nvarchar(1000);

 

--動態查詢

set @exesql='select @temp = count(*) from [dbo].['+ @tableName +'] where ID='''+@ID +''''

 

exec sp_executesql @exesql,N'@temp int output', @AllCount output

 

select @AllCount;

結果:

將統計結果輸出到變數@AllCount中。

提醒:

對於動態表名及欄位使用非常簡單,但獲取結果使用動態語句是有一定規則的,如上面的列子,需要把表名宣告成Nvarchar的,然後執行動態語句時,宣告其動態語句中變數前也要加N ,N'@a

Output:指示該引數為輸出引數。

以上的相關內容就是對SQL server 動態查詢的介紹。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-674566/,如需轉載,請註明出處,否則將追究法律責任。

相關文章