0

我的 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,我想将标签上的所有子节点作为 xml 传递给这个 generalinertionsp,并且与功能相同。

但是我怎样才能将这些节点传递给另一个 sp。

我如何将内部子节点值读取为 xml 并将部分 xml 传递给另一个 sp?

4

2 回答 2

2

如果@x是您的 XML 变量

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

会给你的子节点

于 2012-07-03T10:59:44.290 回答
2

.query()您可以使用SQL Server中的函数选择原始 XML 的片段:

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

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

您现在可以将此 XML 片段传递到您的其他存储过程中以在那里进行处理。

于 2012-07-03T11:00:38.537 回答