2009-09-08 41 views
1

我需要創建一個動態SQL語句,以便根據XML參數選擇字段。如何基於單個XML參數創建動態sql語句

說我有一個存儲過程與1個參數 - [@FIELDS XML]包含字段名稱。如...

字段1 =名稱

場2 =地址等等

..in現實將有多達50場,我只希望在中的那些報告XML參數。

我怎樣才能使一個簡單的聲明是這樣的工作..

select 
    xmlParam1, 
    xmlParam2, 
    ... 
    xmlParamN 
from TABLE 

等等

注:數據是從C#中的字符串數組來了。

謝謝!

回答

0

只需遍歷數組創建相應的SQL查詢語句的字符串,然後EXEC它,比如:

DECLARE @SQL NVARCHAR(4000) 

SET @SQL='select xmlParam1, xmlParam2... from Table' 

EXEC(@SQL) 

顯然,SET @SQL部分將在這裏你遍歷數組,建設字符串。

編輯

要通過XML循環,必須首先從它選擇一個記錄,如

DECLARE @productIds xml 
SET @productIds ='<Products><id>3</id><id>6</id><id>15</id></Products>' 

SELECT ParamValues.ID.value('.','VARCHAR(20)') 
    FROM @productIds.nodes('/Products/id') as ParamValues(ID) 

然後,您必須通過重複記錄,建立你的字符串。有很多方法可以做到這一點,例如使用臨時表或光標。有些例子可以在here找到。

+0

嗨達拉斯,你能給我一個如何循環通過的例子嗎? – Grant