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 を使用しており、タグのすべての子ノードをこの generalinertionsp に xml として機能と同じように渡したいと考えています。

しかし、どうすればこれらのノードを別の SP に渡すことができますか。

内部の子ノードの値を xml として読み取り、部分的な xml を別の sp に渡すにはどうすればよいですか?

4

2 に答える 2

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 に答える
2

@xXML 変数の場合

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

子ノードを提供します

于 2012-07-03T10:59:44.290 に答える