0

私は次のXMLを持っています

<NewDataSet>
<data name="AC_Capacity_Creation_Notification.Text">
    <value>Activation successfull and sent for approval.</value>
    <comments>AC Capacity</comments>
</data>
<data name="AC_Capacity_Modification_Daily_Notification.Text">
   <value>Approved successfully..</value>
   <comments>AC Capacity</comments>
 </data>
 <data name="AC_Capacity_Modification_Schedule_Notification.Text">
   <value>Are you sure you want to close this form?</value>
   <comments>AC Capacity</comments>
   </data>
 </NewDataSet>

このXMLから一時テーブルにデータを取得したいのですが、そこからさらにクエリを実行できますが、それができません。

私はそれをこのようにしてみました:

  EXEC sp_xml_PrepareDocument @intHandle OUTPUT, @XML    

  SELECT * into #tmp FROM OPENXML(@intHandle, '/NewDataset/data',2)

  EXEC sp_xml_removedocument @intHandle   

  drop table #tmp 

しかし、私は空の行を取得しています

4

2 に答える 2

1

ネイティブXQueryを使用するだけです-はるかに簡単です!

DECLARE @Input XML = '<NewDataSet>
<data name="AC_Capacity_Creation_Notification.Text">
    <value>Activation successfull and sent for approval.</value>
    <comments>AC Capacity</comments>
</data>
<data name="AC_Capacity_Modification_Daily_Notification.Text">
   <value>Approved successfully..</value>
   <comments>AC Capacity</comments>
 </data>
 <data name="AC_Capacity_Modification_Schedule_Notification.Text">
   <value>Are you sure you want to close this form?</value>
   <comments>AC Capacity</comments>
   </data>
 </NewDataSet>'

SELECT
    VALUE = NDSData.value('(value)[1]', 'varchar(200)'),
    Comments = NDSData.value('(comments)[1]', 'varchar(200)')
INTO 
    #temp
FROM
    @Input.nodes('/NewDataSet/data') AS Tbl(NDSData) 

次の出力が得られます。

ここに画像の説明を入力してください

于 2012-11-22T07:44:22.810 に答える
0

これは私がそれをした方法です

 SELECT T.N.value('@name', 'varchar(100)')name,
  T.N.value('value[1]', 'varchar(100)')value
 FROM @XML.nodes('/NewDataSet/data') AS T(N)

それはうまくいきます..あなたの答えに感謝します。

于 2012-11-22T09:13:03.603 に答える