2011-06-02 48 views
0

我有以下查詢:SQL服務器

;WITH XMLNAMESPACES (
    'Bob' AS b 
) 
SELECT 'Test' AS [@b:Test] 
FOR XML PATH('root') 

但我想的名字空間定義爲動態地從配置表拿起在運行時。我試過以下,但他們似乎不是有效的SQL:

-- use a sub query 
;WITH XMLNAMESPACES (
    (SELECT 'Fred') AS b 
) 
SELECT 'Test' AS [@b:Test] 
FOR XML PATH('root') 

-- declare a variable 
DECLARE @ns VARCHAR(10) = 'Fred' 

;WITH XMLNAMESPACES (
    @ns AS b 
) 
SELECT 'Test' AS [@b:Test] 
FOR XML PATH('root') 

有什麼辦法讓名稱空間定義動態?

感謝,
湯姆

回答

1

你應該使用動態SQL:

DECLARE @d NVARCHAR(30)='Fred' 

;WITH XMLNAMESPACES (
    'UniqueValue' AS b 
) 
SELECT @ns=(
SELECT 'Test' AS [@b:Test] 
FOR XML PATH('root')) 

SELECT CAST(REPLACE(@ns, 'UniqueValue',@D) AS XML) 
+0

看起來像基本的字符串操作,而不是動態SQL ..謝謝你的答案。 –