2012-07-03 59 views
0

我的XML格式是這樣的:如何從SQL Server中的XML獲取XML子

<Main> 
    <IsD>false</IsD> 
    <IsN>true</IsN> 
    <ID>826e03b3-191c-40c9-8a3d-f6607842fa5f</ID> 
    <ClientId>c6a32c38-0398-4806-b82f-e924f96217fa</ClientId> 
    <General> 
    <IsD>false</IsD> 
    <IsN>true</IsN> 
    <State>New</State> 
    <TypeID>1</TypeID> 
    <ProductID>-1</ProductID> 
    <PeriodId>1</PeriodId> 
    <StateID>5</StateID> 
    <Rating>8</Rating> 
    </General> 
    <Feature> 
    <TypeID>2</TypeID> 
    <DurationID>-1</DurationID> 
    <ClassID>-1</ClassID> 
    <Fee>2500</Fee> 
    <BonusID>-1</BonusID> 
    <BenefitID>15</BenefitID> 
    </Feature> 
</Main> 

我通過這個XML到一個存儲過程,並在此存儲過程,我保存所有Main子節點數據主表。

但現在對於一般和功能表我使用另一個SP,我想要將標籤上的所有子節點傳遞給此generalinertionsp作爲xml和相同的功能。

但我怎麼能通過這些節點到另一個sp。

我怎樣才能讀取內部子節點的價值作爲一個XML和部分XML傳遞給另一個SP ???

回答

2

如果@x是你的XML變量

select @x.query('/Main/General') 
select @x.query('/Main/Feature') 

會給你的孩子節點

2

您可以通過使用SQL Server中的.query()功能選擇原始的XML片段:

DECLARE @input XML = '... (your XML here).....' 

SELECT 
    GeneralNode = @input.query('Main/General'), 
    FeatureNode = @input.query('Main/Feature') 

您現在可以將此XML片段傳遞到您的其他存儲過程以在那裏進行處理。