2014-07-03 24 views
0

代碼:傳遞SQL參數值來選擇XML數據

DECLARE @dataxml XML = CONVERT(xml ,'<Parentnode><childnode><id>1</id></childnode></Parentnode>') 

DECLARE @childnode VARCHAR(50) 
SET @childnode = (SELECT DISTINCT 
         r.value('fn:local-name(.)', 'nvarchar(50)') as t 
        FROM @dataxml.nodes('//Parentnode/*') AS records(r)) 

SELECT @childnode 

SELECT 
    t.value('id[1]', 'int') AS id 
FROM 
    @dataxml.nodes('/Parentnode/*[local-name(.)=sql:variable("@childnode")]/*') AS XD(t) 

輸出返回爲NULL,但它應該帶有id值以XML

什麼問題在這個代碼?

回答

1

你只需要在你的最後一行的末尾刪除/*字符,像這樣:

@dataxml.nodes('/Parentnode/*[local-name(.)=sql:variable("@childnode")]') AS XD(t) 

此外,我不得不在FROM關鍵字結束,除去$的性格,但我猜猜這可能只是一個錯字。我測試過這是SQL Server 2012.