私は次のように機能するSQLクエリを使用してxmlを作成しています。最初にCTE、次にXMLを作成するSELECT
ステートメント。
うまくいきます。ただし、出力をXML変数に格納したいと思います(テーブル変数もそれが簡単であれば問題ありません)。しかし、私はそれを機能させることができないようです(2番目のスニペットを参照)。助言がありますか?
機能するXML生成:
;WITH cte
AS (SELECT ...
)
SELECT ...
FOR XML PATH ('root')
これはテーブル変数に格納するための私の試みでしたが、機能させることができませんでした。
DECLARE @myXml TABLE(
x xml
);
;WITH cte
AS (SELECT ...
)
INSERT INTO @myXml SELECT ...
FOR XML PATH ('root')
これは、結果のエラーメッセージです。
Meldung 6819、Ebene 16、Status 1、Zeile 240
Die FOR XML-Klausel ise in einer INSERT-Anweisung nichtzulässig。
(挿入ステートメントでFOR XMLを使用できません。)
CTE宣言の後に割り当てを置きます。
declare @X xml;
with C as
(
select 1 as X, 2 as Y
)
select @X =
(
select *
from C
for xml path('root')
);
XMLをテーブル変数にしたい場合は、次のようになります。
declare @T table (X xml);
with C as
(
select 1 as X, 2 as Y
)
insert into @T(X)
select (
select *
from C
for xml path('root')
);