我有哪裏我傳遞一個簡單的XML存儲過程:的Open XML插件 - SQL 2005
'<Products><ProductId>1</ProductId><ProductId>2</ProductId></Products>'
我有一個@temp表中的SQL具有ProductID列:
DECLARE @Temp TABLE (
ProductId NVARCHAR(10)
)
我需要編寫一個insert語句,它將遍歷XML中的ProductId(可以是無限的)並繼續插入(在@temp表中),直到XML沒有剩下的ProductId節點。
涉及遊標的解決方案是不可行的!
以下是我試圖執行代碼:
Declare @test XML
SET @test = '<Products><ProductId>1</ProductId><ProductId>2</ProductId></Products>'
DECLARE @Temp TABLE(
ProductId NVARCHAR(10)
)
INSERT INTO @Temp(ProductId)
SELECT tab.col.value('./ProductId[1]','NVARCHAR(10)') AS 'ProductId'
FROM @test
CROSS APPLY
xml_data.nodes('//Products') AS tab(col)
我不斷收到錯誤:
Must declare the table variable "@test".
嘗試運行INSERT的SELECT部分,使用xml字符串替換@test。確保首先工作 – 2009-08-27 19:07:13
不會允許我對字符串執行FROM操作。 – 2009-08-27 19:10:51
是的,需要使用OPENXML - 請參閱我更新的答案。 Ref:OPENXML:http://msdn.microsoft.com/en-us/library/aa276847%28SQL.80%29.aspx – 2009-08-27 19:15:12