問題タブ [oracle-xml-db]
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.
oracle - 複数項目のシーケンスを取得しました
私の意図は、「コンテナ番号が入力データと等しいデータを選択する」ことです(一種の検索機能)。データを取得しようとしているときに問題に直面しています。 where 条件に問題があります。
ここでは、複数のデータを取得しています。where 条件で反復する方法がわかりません。
私のクエリは次のとおりです。
私のソース XML は次のとおりです。
sealId が 5678 であるすべての宣言を選択するにはどうすればよいですか? この場合、where 条件をどのように処理しますか?
java - タグの配列を持つ複合型の where 条件を記述できない
私はXMLデータベースに不慣れで、transportEquipmentのidにwhere条件を書き込んでいるときに問題に直面しています。
私のxmlは:
データベースから取得した以下のxml。この xml には、id に where 条件を記述する必要がある transportequipment の複数の id があります。localreferencenumber や identifier などの where 条件を記述できます。しかし、transportEquipment の「id」への書き込みに失敗しました。bcz ここではこれらが多数あります。
そして、以下のクエリに where 条件を追加できません
sql - サブセレクト解析結果オラクルを選択
一時抽出 :
ACH_ADDENDA:
-- これはテーブル A (トランザクション タイプ 1) の一時テーブルの値に対してローカルである必要がありますが、xml ではトランザクション タイプ 2 の出力にも表示されます。whereクエリを使用してそのサブセレクトをローカルにするにはどうすればよいですか? 御時間ありがとうございます。
出力は次のとおりです。
PMTRELINFO は、2 番目のトランザクションではなく、最初のトランザクションに適用されます。
sql - ExtractValue/xml シーケンス
抽出する小さなデータに対しては正常に機能する次のコードがありますが、より大きなサイズのレコードに遭遇するとエラーになります。ORA-01706: user function result value was too large エラーを回避するにはどうすればよいですか?
お時間をいただきありがとうございます!
xml - ORA-00937: 単一のグループ関数ではありません(XMLAGG)
単一の行で集計関数を使用しXMLAGG
ましたが、エラー コード ORA-00937 が引き続き発生します。なんで?
レポートの構造は次のとおりです。
私の選択ステートメントは次のとおりです。
oracle - Oracle PL/SQL Web サービスで XMLTYPE を使用できない
Oracle PL/SQL パッケージを Oracle 11g (11.2.0.2.0) の Web サービスとして提供しようとしています。他のすべては順調に進んでいますが、Web サービスで XMLTYPE を使用するプロシージャ/関数を使用する際に問題があるようです。XMLTYPE が Oracle Web サービスでサポートされていない場合、またそのような制限を示すリソースが見つからない場合、私は非常に驚くでしょうが、何か間違ったことをしていると思います。ただし、どこに問題があるのか 、したがって質問がわかりません。
Oracle 11g リリース 1 のネイティブ Oracle XML DB Web サービスに従って、Oracle データベースにネイティブ Web サービスを構成し、SoapUI を使用して基本的なデータ型で手順をテストすることに成功しました。
問題の他の原因を除外するために、問題を再現する次の最小化されたテスト パッケージを作成しました。
定義済みのプロシージャを SQLPlus で実行すると、うまく動作します。
サービスが構成され、パッケージがデータベースに定義されると、パッケージの WSDL をhttp://host:port/orawsv/DBSCHEMA/WEB_TEST_PACKAGE?wsdlから取得できます。WSDL を使用して、サンプル リクエストを含む SoapUI プロジェクトを作成します。次に、基本認証を使用するように要求を構成し、クエリをテストする準備が整いました。
SoapUI でクエリを実行すると、応答に次のエラーが表示されます。
エラーを正しく解釈すると、select-clause がある行にエラー ORA-00904 "invalid identifier" が表示されます。そして、私の理解では、「XMLTYPE」はその行の唯一の識別子です。つまり、Web サービスを介してプロシージャが実行されたときに認識されません。
最後に質問です。Web サービスを介して呼び出されるプロシージャで XMLTYPE を使用できないという制限はありますか? それとも、ここで何か不足していますか?
念のため、コンストラクタ形式 XMLTYPE(...) をメソッド形式 XMLTYPE.CreateXML(...) に置き換えようとしましたが、役に立ちませんでした。
oracle - Oracle XQuery (XMLQuery/XMLTable) での日付の比較
を使用してOracleデータベースにいくつかのチェックを実装しようとしているXQuery
ときに、2つの日付が同じかどうかを比較する必要がありますが、 へのキャストxs:date
は から値の時間部分を実際に削除しないため、明らかな方法でそれを行うことはできませんxs:dateTime
。
クエリ自体は、別の環境 (例: http://www.xpathtester.com/xquery ) で適切に機能するようです。
何か重要なことを見逃しているのでしょうか、それともこのケースは単なるバグであり、特別な回避策 (比較のために文字列値に変換する、両方の日付の年、月、日付を別々に比較するなど) が必要ですか?
小さな例...
単純な XML があるとします。
時間部分を無視しdate_value
て固定値と比較したい。xs:date('2015-09-11')
まず、ノードのコンテンツを目的のタイプに変換し、次のようにキャストして時間部分を削除しxs:date
ます。
XMLQuery()
上記のドキュメントを として渡すときにこの値を選択すると$doc
、期待される出力が得られます。
Ok。時間部分が削除されたようですが、比較は失敗します:
を返しますfalse
。式の値を比較するのではなく、差を見ようとすると、次のようになります。
'PT15H25M55S'
の時間部分と正確に一致する が表示されdate_value
ます。
テスト用に上記のすべての式を使用してクエリを実行します。
この Oracle バージョンで再現される動作:
と
アップデート
collapsarとAlex Pooleの回答に感謝します。これにより、正しい回避策についての主なアイデアが得られます。しかし、問題の核心を説明しようとして、いくつかの日付演算と実際の回避策を含むユースケースを単純化しすぎて、以下のクエリのようになります。
sql - Oracle Case Statement とともに XMLElement を実行すると、実行ごとに異なる出力が得られます
これは、実行しようとしているオラクルクエリであり、実行ごとに異なる出力が得られます。最初の実行では正しいxml
リクエストが返され、その後のすべてのリクエストでは null が返されます。また、怖いのは、xml
要素名を から"PHONE"
に変更する"PHONE1"
と、初回のみ、およびNULL
後続の要求に対して再び出力が得られることです。
また、(テーブルに存在する同じ値)の値をハードコードするCLI_PHONENUMBER
と、常に正しい出力が得られます。
database - oracle-xml での XMLElement の使用に関する問題
私はxmlタイプのOracleのテーブルを作成しています(これは初めてです)。テーブルにいくつかのレコードを挿入しました。select ステートメントを使用してテーブルからレコードを取得しようとすると、次のエラーが発生します。
[エラー] スクリプト行: 404-405 ---------------------- ORA-00904: "E"."ENAME": 無効な識別子スクリプト行 404、ステートメント1 行目、25 列目
ステートメントを作成します。
挿入ステートメントの 1 つ
次のステートメントを実行すると、エラーが発生します SELECT XMLELEMENT("Name",e.ENAME) FROM EMPLOYEE_XML e /
注: XMLELEMENT を使用してテーブルからデータを取得する必要があります