問題タブ [ora-00932]
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 - CLOB列の更新中にORA-00932が発生しました
VARHCAR 型でサイズが 2000 を超える約 10 列のテーブルがあります。一時列を使用し、データをコピーした後に名前を変更して、それらを CLOB に変換しようとしています。これらの列のうち 4 つには問題はありませんでしたが、残りのすべての列で ORA-00932 が発生しました。以下は、列ごとに繰り返される SQL です。
これはエラーレポートです:
string - Entity Framework & Oracle: VARCHAR2 > 1,999 文字を挿入できない
Oracle テーブルに 4,000 文字の VARCHAR2 フィールドを作成しました。Visual Studio 2010、.NET Framework 4、 ODAC 11.2 Release 4、および Oracle Developer Tools for Visual Studio (11.2.0.3.0)で LINQ to Entities を使用してフィールドに文字列値を挿入しています。1,999 文字を超える文字列値を挿入しようとすると、次の内部例外が発生します。
Oracle.DataAccess.Client.OracleException
ORA-00932: 一貫性のないデータ型: 予期される - NCLOB を取得しました
ただし、SQL Developerを使用すると、問題なく4,000文字の文字列値をフィールドに挿入できます。
XMLTYPE フィールドに保存するときに 2,000 文字の制限がある既知の ODAC バグ(ソース #2 ) がありますが、私は XMLTYPE フィールドに保存していません。GAC に Oracle.DataAccess 2.112.3.0 があり、前述の Oracle ソフトウェアのリリース 5 (11.2.0.3.20) に更新することを検討しましたが、「Oracle Developer Tools for Visual Studio」だけが更新されたように見えるコンポーネントです。はリリース 4 から更新されており、「Oracle Data Provider for .NET 4」が更新が必要なコンポーネントであると考えています。私の .NET プロジェクトでは、System.Data.Entity と System.Data.OracleClient はどちらもランタイム バージョン 4.0.30319 です。
とにかく、他の誰かがこのエラーに遭遇したかどうか、そしてもしそうなら、解決策が見つかったかどうか疑問に思っています. Google によると、XMLTYPE フィールドを操作しているときにのみこのエラーが発生しているとのことですが、VARCHAR2 フィールドを操作しているときにこのエラーが発生するのは私だけではないでしょうか?
(FWIW、上記のリンクにある Oracle フォーラム スレッドのユーザー「997340」としての私の投稿への応答を受け取ることも望んでいます。有用な応答を受け取った場合は、この点に関する知識を必ず共有します。)
編集:それが役立つ場合、以下は私のコードで失敗している2つのブロックです。違いがあるかどうかを確認するために、最初のブロックをトラブルシューティングするときに 2 番目のブロックを作成しました。文字列値が既に挿入されているかどうかを確認するとき (「if」ステートメント)、および実際に文字列値を挿入するとき (「AddObject」ステートメント) に例外が発生します。
1:
2:
4 月 3 日の更新:
上記の最初のコード ブロックの「if」ステートメントから、Oracle に送信されている SQL をトレースすることができました。ここにあります:
残念ながら、私が協力した DBA は「p_linq_0」パラメーターの値を提供してくれませんでしたが、前述のように、1,999 文字を超えると例外が発生します。(この SQL をトレースしたとき、4,000 文字の文字列をパラメーターとして渡しましたが、もちろん例外が発生しました。) DBA は、SQL Plus などの特定の SQL クライアントについて、2,000 文字を超える VARCHAR2 を処理できないことについても言及しました。 . 完全には従いませんでした。SQLを使用するかどうかさらに、SQL Developer、またはその他のツールを使用して、Oracle は引き続き 4,000 文字の VARCHAR2 フィールドを照会します。さらに、私のマジック ナンバーは 1,999 文字です。2,000文字ではありません。DBA は、パラメーターに使用できる文字数に制限があることを意味したのでしょうか? さらに重要なことは、SQL Developer でこの SQL を実行し、パラメーターに 4,000 文字の文字列を入力すると、完全に機能することです。そのため、LINQ to Entities を介して機能しない理由について、私はまだ完全に混乱しています。また、プログラムで次のコードを試して、「msg」変数に 4,000 文字の文字列を指定して同様のクエリを実行しましたが、これも完全に機能しました。
今のところ、LINQ to Entities に関連するため、ODAC がバグであることにまだ指を向けています...
java - @Convert アノテーションが付けられたフィールドを比較する述語を含む JPA 基準クエリは、実行時に ORA-00932 を取得します
Java EE 7 アプリケーション (永続化プロバイダーは Hibernate 4.3.5、DB は Oracle 11g) を開発しています。このアプリケーションでは、日付のミリ秒を表す Long フィールドを持つエンティティ クラスを使用しています。DB の日付データ型 (タイムゾーンの処理など) を使用する際の問題を回避するために、このように行われています。関連するエンティティ クラス コードは次のとおりです。
メタモデル クラスの属性:
簡単な JPA 2.1 コンバーターを次に示します。
テーブル定義:
フィールド値の永続化と読み取りは魅力のように機能します。フィールドを値と比較する CriteriaQuery で述語を使用しようとすると、問題が発生します。
これは私が得ている例外です:
スタックトレース:
このようなフィールドを基準クエリの述語で使用する正しい方法は何ですか? コンバーターは、読み取り/永続化のためにのみ機能します。私は方法を探していましたが、JPA 2.1 仕様 (ちなみに非常に大きい) でもできませんでした。ここで何が欠けていますか?ご清聴ありがとうございました。
oracle - カーソル・フェッチでのORA-00932
ALREADY WORKING コードで奇妙な問題に遭遇しました。出力カーソルとしてv_po_reportを返す作業プロシージャpkg_pbrer.p_gen_pbrer_rptがあります。
このカーソルを table_po_report_62 にキャプチャしようとしていますが、これは正常に機能していました。
今、私はのエラーに直面しています
ORA-00932: データ型に一貫性がありません: 予期された - 取得された - がカーソル・フェッチ文に含まれています。
わかりやすくするために、不要なコード行は省略しています。
oracle11g - Oracle "ORA-00932: inconsistent datatypes: expected NUMBER got TIMESTAMP" が INSERT INTO で発生するが、SELECT では発生しない
SQL Developerで次のコマンドを実行します:
次のエラーが発生します。
ORA-00932: 一貫性のないデータ型: 期待されるNUMBERはTIMESTAMPを取得しました
最初の部分 ( ) を削除するinsert into table2
と、select コマンドは正常に実行され、期待どおりにレコードが返されません。
Table1 と table2 には、VARCHAR2、TIMESTAMP、および NUMBER の 70 以上の列があります。
テーブル 1 とテーブル 2 は、テーブル 1 列を通過してテーブル 2 を作成する APP によって作成されます。唯一の違いは、テーブル 1 には多くのインデックスがあり、テーブル 2 には単一のインデックスがあることです。
table1 と table2 の列とデータ型がまったく同じであることを確認しました。ただし、「desc table1」と「desc table2」の出力では列が異なる順序でリストされていますが、すべて一致しています。
同様の方法で作成されたが、列の数が少ない (列の型が同じである) 他のテーブルでコマンドを実行すると、挿入が機能し、エラーは表示されません。これらのテーブルに対して「desc」コマンドを実行すると、列が同じ順序で一覧表示されます。
エラーをGoogleで検索しましたが、答えが見つかりませんでした。私の Oracle のバージョンは 11g です。
このエラーが返される理由と回避方法はありますか?
php - ORA-00932: データ型に一貫性がありません: 期待されたCHARがARRAYを取得しました
PHP を使用して配列を取得しようとしていますが、次のエラーが表示されます。
VARRAY 列は、使用可能なコレクション メソッドを使用してプログラムで使用できるようになると思います。クエリは Toad では正常に実行されますが、PHP では実行されません。
これが私array_of_varchar
の VARRAY コレクションです。
この問題を解決するためのヒントはありますか?
sql - ORA-00932 収集呼び出しからのデータ型が矛盾しています
cast(collect(value) as DBMSOUTPUT_LINESARRAY)
次の例のように、を使用して結果を 1 行にまとめることができたときは、本当にうれしかったです。
しかし、次の例のようcast(collect(valueagg) as DBMSOUTPUT_LINESARRAY)
に、最初のクエリの結果に対して別の集計を試みると、エラーが発生します。
結果が制限されるにもかかわらず、varchar2に変換しようとしました-文字列の最初の4000文字で十分なので、心配していません-しかし、これを行うことができませんでした。