9 Oracle Database Provider for DRDAでのエラー・コードのサポート
Oracle Database Provider for DRDAではエラー・コードがサポートされており、DB2およびDRDA向けに開発されたアプリケーションで生成されるエラーおよび警告を管理できます。
9.1 Oracleエラー・コード
DRDAおよびDB2では、正常に完了しても警告が生成される特定タイプの操作があります。たとえば、操作により整数オーバーフローの状況が発生した場合、DB2は処理を続行し、エラーを含む列値に設定されたインディケータとともに残りの行データを返します。また、警告コード+802
が発行されます。
(EXCEPTION ERROR exceptioncode HAS OCCURRED DURING operationtype OPERATION ON datatype DATA, POSITION positionnumber)
DB2およびDRDAでは、負数のSQLCODE
はエラーであり、正数のSQLCODE
は警告です。Oracleでは、DRDA(およびDB2)とは異なり、警告条件の概念がありません。Oracleではコールの実行が成功するか、またはエラーが生成されるかのいずれかです。たとえば、Oracleではオーバーフロー状況はエラーとして処理され、続行しません。このため、Oracle Database Provider for DRDAではDB2の動作を正確にエミュレートできません。
ただし、OracleとDRDA(およびDB2)の両方に共通するほとんどの標準的なエラー条件はマップできます。
「OracleからDRDAへのエラー・コード・マッピング」に、一般的なOracleエラー・コードとそれに対応する同等のSQLコードおよびSQL状態を示します。
関連トピック
9.1.1 OracleからDRDAへのエラー・コード・マッピング
表9-1 OracleからDRDAへのエラー・コード・マッピング
Oracleエラー・コード | SQLCODE | SQLSTATE | エラー・コードの説明 |
---|---|---|---|
|
|
|
一意制約違反 |
|
|
|
無効なSQL文 |
|
|
|
無効なSQL文 |
|
|
|
無効な |
|
|
|
無効なデータ型 |
|
|
|
無効な表名 |
|
|
|
無効な識別子 |
|
|
|
無効な識別子 |
|
|
|
スペルが正しくないキーワード |
|
|
|
左カッコがありません。 |
|
|
|
右カッコがありません。 |
|
|
|
|
|
|
|
引数の数が正しくありません。 |
|
|
|
長さが |
|
|
|
無効な文字 |
|
|
|
値の個数が多すぎます。 |
|
|
|
カンマがありません。 |
|
|
|
列使用方法があいまいです。 |
|
|
|
関係演算子が無効です。 |
|
|
|
オプションが無効であるか存在しません。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=記号がありません。 |
|
|
|
|
|
|
|
値にターゲット列の型との互換性がありません。 |
|
|
|
SQLコマンドが適切に終了していません。 |
|
|
|
グループ関数は使用できません。 |
|
|
|
式がありません。 |
|
|
|
単一のグループ関数ではありません。 |
|
|
|
表またはビューが存在しません。 |
|
|
|
値の個数が不足しています。 |
|
|
|
Invalid |
|
|
|
すでに使用されているオブジェクト名です。 |
|
|
|
列名が重複しています。 |
|
|
|
選択リストに未確定の列名があります。 |
|
|
|
|
|
|
|
|
|
|
|
識別子が長すぎます。 |
|
|
|
日付と日付の加算はできません。 |
|
|
|
|
|
|
|
ビュー名が無効です。 |
|
|
|
最大オープン・カーソル数を超えました。 |
|
|
|
フェッチ順序が無効です。 |
|
|
|
バインドされていない変数があります。 |
|
|
|
オブジェクトに対して操作を実行する権限が不足しています。 |
|
|
|
変数の名前/数が無効です。 |
|
|
|
|
|
|
|
データが見つかりません。 |
|
|
|
無効な |
|
|
|
完全フェッチがリクエストよりも多くの行を戻しました。 |
|
|
|
エスケープ文字に続く文字がないか、または無効です。 |
|
|
|
エスケープ文字は長さ |
|
|
|
単一行の副問合せから複数の行が戻されました。 |
|
|
|
ユーザーが存在しません |
|
|
|
この列に許容される指定精度より大きな値です。 |
|
|
|
列の変換により |
|
|
|
除数が0です。 |
|
|
|
入力データ中の |
|
|
|
数値が無効です。 |
|
|
|
|
|
|
|
ホスト/バインド変数名が無効です。 |
|
|
|
無効な表または列が指定されました。 |
|
|
|
引用符付き文字列の引用符が欠落しています。 |
|
|
|
集合演算子のオペランドで列数が同一ではありません。 |
|
|
|
入力文字列全体を変換する前に日付書式ピクチャが終了しました。 |
|
|
|
(周)年は |
|
|
|
無効な月。 |
|
|
|
無効な年。 |
|
|
|
日付の数値を指定する位置に数値ではないものが指定されています。 |
|
|
|
リテラルが書式文字列と一致しません。 |
|
|
|
下位セッションに |
ORA-02291 |
-530 |
23503 |
親が見つかりません(挿入/更新/削除) |
ORA-02292 |
-531 |
23504 |
子が見つかりません(挿入/更新) |
ORA-02292 |
-532 |
23504 |
子が見つかりません(削除) |
|
|
|
オブジェクトが見つかりません。 |
|
|
|
パッケージ本体にエラーがあります。 |
|
|
|
次のような様々なPL/SQLエラーを報告します。
|
|
|
|
ファンクション名またはプロシージャ名が無効です。 |
|
|
|
現在、指定した行は存在しません。 |
|
|
|
列に対して値が大きすぎます。 |
|
|
|
ユーザーにはこの操作のためのパッケージ権限がありません。 |
|
|
|
パッケージのバインドに失敗しました。 |
|
|
|
ユーザーには、この操作のパッケージ権限がありません |
|
|
|
パッケージが存在しません。 |
|
|
|
無効なLOBロケータが指定されました。 |
|
|
|
SQL文にスペルミスがあります。 |
|
|
|
配列の挿入またはマージでエラーが報告されました。 |
その他すべてのエラー |
|
|