問題タブ [for-xml-explicit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
7084 参照

sql-server - 「FORXMLEXPLICIT」のトラブルシューティングに関する提案メッセージ6833「最初に親タグを開く必要があります」エラー

FORXMLEXPLICITを使用してXMLを生成する1000行のストアドプロシージャを継承しました。私の問題は、それがほとんどの場合機能することです。一部のシナリオでは、次のエラーが発生します。

親タグID2はオープンタグに含まれていません。FOR XML EXPLICITでは、最初に親タグを開く必要があります。結果セットの順序を確認してください。番号:6833重大度:16状態:1

これをトラブルシューティングする方法についてのアイデアが必要です。ネストが失敗している場所を見つける必要があります。親行が発行されていないのに、子行が発行されている可能性があります。さらに悪いことに、この問題はテストシステムでのみ発生し、本番データの一部が欠落している可能性があります。問題は、何千もの行からこれを見つける方法です。

確かに存在しないという1つのワイルドなアイデア:SQL Serverには、行が正しい順序であるかどうかを判断するために使用するアルゴリズムがあります。私の結果セットを(FOR XML EXPLICITなしで)見て、問題がどこにあるかを見つけて、それについて教えてくれるツールがあれば、(ありそうもないとしても)素晴らしいでしょう。

そのようなツールがない場合は、これをデバッグする方法についての提案を歓迎します。XML(動作する場合)は4レベルの深さです!


更新:これまでのすべての回答に感謝します。これは、不適切に編集されたストアドプロシージャの問題のようです。大きなセクションは「/*/」コメントでコメント化されました-コードにすでに「/*/」コメントがある場合はうまく機能しません...答えが確実になったら、もう一度更新します。

0 投票する
1 に答える
113 参照

sql-server - XML クエリ タグは、ネストされているのではなくスタックされています

私はこれらのテーブルを持っています:

ヒント

グルポ

製品

このクエリで:

それは私にこれを返します:

または、FOR XML がない場合は、次のようになります。

「tipo」と「grupo」が積み上げられて空になっています。実際にこの結果が必要な場合:

つまり、"Tipo" と "Grupo" と "produto" が に従ってネストされています。

私は何を間違っていますか?

0 投票する
1 に答える
1950 参照

sql-server - For Xml 句、明示モードを使用した SQL Server クエリで XMLNAMESPACE を指定する

FOR XML句モードを使用していくつかのデータベースにクエリを実行しようとしていますが、このモードEXPLICITを使用しているときに XMLNAMESPACE とスキーマを指定する方法がわかりません。AUTORAW

このMSDNクエリの例では、その結果で、Schema1結果のスキーマとして を指定しています。XML

そしてここにサンプル結果があります:

0 投票する
2 に答える
4339 参照

sql - 明示的なxmlを使用して要素と属性でxmlを生成する方法

次の形式でxmlを生成しようとしています:

私の質問は次のとおりです。

私のクエリはレコードタグを完全に生成しませんが、現在は生成されます

これは次のようになります

私はすべての可能性を試しましたが、タグを取得できませんでした。誰かが私がこの問題を解決するのを手伝ってくれますか?

0 投票する
2 に答える
16003 参照

sql-server-2008 - FOR XML を使用した SQL Server EXPLICIT モード

EXPLICITSQL Server 2008 を使用しており、 mode withを使用してカスタム xml を生成しようとしていますFOR XML

次のクエリを持つ1対多の関係があります

ここに画像の説明を入力

私は人を親として、子としての住所が複数になる可能性があります。

次のクエリを書きました

次のように出力されます。xml が壊れており、入れ子になっている人がいて、コードに問題があることは確かです。

誰かが私を助けてくれませんか!!!

0 投票する
1 に答える
1946 参照

sql-server-2008 - FOR XML EXPLICIT UNION の結果を変数に割り当てる

このクエリは正常に動作します

変数に代入したいと思います。これはユニオンなしでうまく機能します:

ユニオンを導入するとすぐに機能しません。

ありとあらゆることを試しました。何が足りないの

0 投票する
1 に答える
430 参照

sql-server - 「for XML Explicit」クエリの出力は、接続に応じて money 列の末尾のゼロを変更します

一時テーブルを作成し、次のような「for XML Explicit」構文を使用して XML を出力する Microsoft SQL Server クエリがあります。

これはすべて、ストアド プロシージャ内に含まれています。ID を渡してストアド プロシージャを実行するだけで、XML ドキュメントを取得できます。

クエリ自体はうまく機能しており、数年間使用されています。ただし、現在、ストアド プロシージャの呼び出し元に応じて XML 出力が変化する状況が確認されています。私たちの出力には、多数のお金のデータ型が含まれています。場合によっては、通貨型に末尾のゼロが含まれないことがあります。それ以外の場合、型は常に 4 桁の有効数字を示します。

私のテスト環境では、これを SQL Server 2008 R2 データベースに複製しました。

たとえば、私のメイン プログラム (古い SQLOLEDB プロバイダーに接続) は、末尾のゼロを含まない XML を取得します。

ただし、SQL Server Management Studio から同じストアド プロシージャを実行すると、常に 4 つの場所が取得されます。

また、余分なゼロを取得している同じ SQLOLEDB プロバイダーを使用してアプリケーションに接続しているクライアントもあります。

XML ファイルを処理してレポートを生成します。それらは余分なゼロを期待していません。2 つの異なるプログラム間で異なる出力が表示されるので、データベース オプション、接続文字列オプション、またはマネー タイプを XML 出力用の文字列に変換する方法を制御する追加のコマンド パラメータがあると推測しています (期待しています)。

そのようなものは存在しますか?もしそうなら、出力の一貫性を保つために値を設定するにはどうすればよいですか? 余分なゼロがないことが望ましいです。

0 投票する
1 に答える
1286 参照

sql - XML の明示的なネスト データの場合

結局、これに答えました-XML明示を使用しなければならない他の不幸な魂を助ける場合に備えて、以下に概説します:)

以下に含まれる XML を出力する次のコードがあります。私が直面している問題は、各request_status_updateセクションにshipping_infoおよびassociated_pin_padセクションが 1 つずつあるはずですが、それらはすべて最後のrequest_status_updateのみに表示されるということです。

代わりに、XML PATH を使用してこの種のネストを行う方法を誰かが教えてくれれば、その方が簡単かもしれません。私も大賛成です。1 つのヘッダー セクションを取得する方法がわかりませんでしたが、それでも複数の request_status_update セクションを取得できませんでした。XML PATH は、ヘッダー セクションだけではなく、常に行ごとに何かを行うことを期待しているようです。

これについて何か助けてくれてありがとう。私はそれが長いコードであることを知っています(それについて申し訳ありません)

SQL コード:

XML OUTPUT: (これは問題領域であるため、request_status_updates セクションのみが含まれています。

期待される出力:

修理:

この order by 句を追加する必要がありました。

さらに、Tag 4 のクエリから始めて、並べ替えが機能するように、NULL ではなく RequestID が実際に結果に含まれていることを確認する必要がありました。

また、XML EXPLICIT よりも単純であるはずの XML PATH を使用することも検討しますが、これまでのところ、これは機能しています。