以下のコードを使用してxmlを生成しようとしています。しかし、私は出力結果に満足していない。以下のコードでは、カーソルを生成して別のテーブルで更新するためのIDを取得するためにカーソルを使用しています。どんな助けもありがとうございます。私はxmlを初めて使っています。おかげフィールドを2回繰り返さずにXMLを生成する方法
DECLARE @xml_var XML;
DECLARE @ID INT;
DECLARE XML_CURSOR CURSOR FOR
SELECT id
FROM xml_temp_table
WHERE id IS NOT NULL;
OPEN XML_CURSOR;
FETCH NEXT
FROM XML_CURSOR
INTO @ID;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @xml_var =
(
SELECT
(
SELECT 'Type' AS ID,
'Initial' AS VALUE,
'' AS TAG,
'true' AS VISIBLE,
Getdate() AS HISTORY,
'' AS DESCRIPTION,
'' AS COMMENT
FROM XML_TABLE d
WHERE D.XML_ID = @ID FOR XML PATH('field'),
TYPE) AS 'field',
(
SELECT 'OwnerName' AS ID,
'Testing_XML' AS VALUE,
'' AS TAG,
'true' AS VISIBLE,
Getdate() AS HISTORY,
'' AS DESCRIPTION,
'' AS COMMENT
FROM XML_TABLE d
WHERE D.XML_ID = @ID FOR XML PATH('field'),
TYPE) AS 'field'
FROM XML_TABLE p
WHERE P.XML_ID = @ID FOR XML PATH('Material'),
ROOT('FormValue'));
UPDATE S
SET S.XML_COL = @xml_var,
FROM LOCATION_TABLE_XML S
WHERE S.ID = @ID;
FETCH NEXT
FROM XML_CURSOR
INTO @ID;
END;
私は取得していた結果では、このよう
<FormValue>
<Material>
<field> ----- i dont want this
<field>
<id>Type</id>
<value>Initial</value>
<tag />
<visible>true</visible>
<history>2016-11-08T16:53:16.440</history>
<description />
<comment />
</field>
<field>
<id>OwnerName</id>
<value>Testing_XML</value>
<tag />
<visible>true</visible>
<history>2016-11-08T16:53:16.440</history>
<description />
<comment />
</field>
</field> ---- i dont want this
</Material>
</FormValue>
あるしかし、私はAS 'field'
を離れて聞かせするのに十分で可能性がありますこのよう
<FormValue>
<Material>
<field>
<id>Type</id>
<value>Initial</value>
<tag />
<visible>true</visible>
<history>2016-11-08T16:53:16.440</history>
<description />
<comment />
</field>
<field>
<id>OwnerName</id>
<value>Testing_XML</value>
<tag />
<visible>true</visible>
<history>2016-11-08T16:53:16.440</history>
<description />
<comment />
</field>
</Material>
</FormValue>
に置き換えることができ、次のいずれか私はあなたがこのためにカーソルを必要とするだろうとは思いません。これは、通常のセットベースの操作では簡単に実行する必要があります。必要に応じて、テーブルの定義を減らし、いくつかの行のサンプルデータと期待される出力を追加して、もう1つの質問を追加することができます。 – Shnugo
ありがとうShnugo、それは働いた。もちろん、カーソルなしで生成する別の質問を投稿します。 – wwidhoo