メッセージは、SQLのみでなく、基底ソフトウェアからも表示される場合があります。
SQLの使用時に表示されるメッセージは、次のレベルから生成されます。
%SQL-E-CURALROPE, Cursor K was already open |
プログラムでは、付録C.2節に示すように、SQL_SIGNALルーチン、SQL_GET_ERROR_TEXTルーチン、SQL_GET_MESSAGE_VECTORルーチンおよびSQL$GET_ERROR_TEXTルーチンでメッセージ・ベクター構造体を使用して、エラーのシグナルを発行したり、対応するメッセージ・テキストを返すことができます。
%COSI-F-NOQUAL, qualifiers not allowed - supply only verb and parameters |
%RDMS-F-INVDB_NAME, invalid database name |
他の製品については、該当するドキュメントを参照してください。
%CDD-E-ERRSHOW, error displaying object |
エラー・メッセージの生成元とは無関係に、メッセージの形式は同じです。すべてのエラー・メッセージには、次の要素が含まれます。
%SQL-F-CURNOTOPE, Cursor <str> is not opened |
このメッセージの表示では、<str>は実際の文字列(この例ではカーソル名)に置き換えられます。
エラー・メッセージの一部またはすべての要素の表示は、DCLでSET MESSAGEコマンドを使用して抑制できます。
コード | 重大度 | 説明 |
---|---|---|
S | 成功 | コマンドが正常に実行されたことを示す。 |
I | 情報 | ソフトウェアによって行われた処理を報告する。 |
W | 警告 | エラー状態を示すが、是正処置が不要な場合もある。 |
E | エラー | 致命的ではないが、処置または修正が必要な状態を示す。 |
F | 致命的 | 致命的であり、処置または修正が必要な状態を示す。 |
エラー・メッセージは頻繁に更新されるため、ドキュメントは次のテキスト・ファイルで提供されます。
メッセージのドキュメントは、すべての機能に関して同じ形式であり、メッセージはメッセージ名のアルファベット順に記載されています。メッセージ名とテキストの後には、その説明と、推奨されるユーザー処理が記載されています。
メッセージ・ドキュメントのオンライン・ファイルは、新規バージョンのSQLをインストールしなくても更新される場合があります。特に、Oracle Rdbデータベースのインストールでは、RDB_MSG.DOCファイルが最新のファイルに置き換えられる場合があります。
メッセージ・ドキュメントのオンライン・ファイルは、印刷して参照できます。また、必要なメッセージ情報をファイルで検索することもできます。
A.3 SQL文の使用時に生成されるエラー
SQLを使用するアプリケーション・プログラムを記述するときは、次のいずれかの方法でエラー・メッセージを返す必要があります。
SQLオプションを使用したエラー処理の詳細は、『Oracle Rdb7 Guide to SQL Programming』を参照してください。
表A-2に、SQL文と、SQL文によって実行時に通常生成されるエラーを示します。これは完全なリストではありません。2列目にはエラー・メッセージのステータス・コードが、3列目にはSQLCAのSQLCODEフィールドの対応する値が示されています。SQLCODE値の詳細は、付録Cを参照してください。
SQL文 | エラーのステータス・コード2 | SQLCODE値 |
---|---|---|
ALTER DOMAIN | SQL$_BAD_LENGTH | --1029 |
SQL$_BAD_SCALE | --1030 | |
SQL$_NO_SUCH_FIELD | --1027 | |
ALTER TABLE | RDB$_DEADLOCK | --913 |
RDB$_INTEG_FAIL | --1001 | |
RDB$_LOCK_CONFLICT | --1003 | |
RDB$_NO_PRIV | --1028 | |
RDB$_READ_ONLY_REL | --1031 | |
RDB$_READ_ONLY_TRANS | --817 | |
RDB$_READ_ONLY_VIEW | --1031 | |
RDB$_REQ_NO_TRANS | なし1 | |
SQL$_BAD_LENGTH | --1029 | |
SQL$_BAD_SCALE | --1030 | |
SQL$_COLEXISTS | --1023 | |
SQL$_FLDNOTDEF | --1024 | |
SQL$_FLDNOTINREL | --1024 | |
SQL$_NO_SUCH_FIELD | --1027 | |
ATTACH | RDB$_REQ_WRONG_DB | --1020 |
CLOSE | SQL$_CURNOTOPE | --501 |
COMMIT | RDB$_DEADLOCK | --913 |
RDB$_INTEG_FAIL | --1001 | |
RDB$_LOCK_CONFLICT | --1003 | |
SQL$_NO_TXNOUT | --1005 | |
CREATE DOMAIN | SQL$_FIELD_EXISTS | --1026 |
CREATE VIEW | RDB$_DEADLOCK | --913 |
RDB$_LOCK_CONFLICT | --1003 | |
SQL$_NO_SUCH_FIELD | --1027 | |
SQL$_REL_EXISTS | --1025 | |
DELETE | RDB$_DEADLOCK | --913 |
RDB$_INTEG_FAIL | --1001 | |
RDB$_LOCK_CONFLICT | --1003 | |
DELETE...WHERE | RDB$_DEADLOCK | --913 |
CURRENT OF... | RDB$_INTEG_FAIL | --1001 |
SQL$_CURNOTOPE | --501 | |
SQL$_FETNOTDON | --508 | |
FETCH | RDB$_DEADLOCK | --913 |
RDB$_LOCK_CONFLICT | --1003 | |
RDB$_STREAM_EOF | 100 | |
SQL$_CURNOTOPE | --501 | |
SQL$_NULLNOIND | --305 | |
INSERT | RDB$_ARITH_EXCEPT | --304 |
RDB$_DEADLOCK | --913 | |
RDB$_INTEG_FAIL | --1001 | |
RDB$_LOCK_CONFLICT | --1003 | |
RDB$_NO_DUP | --803 | |
RDB$_NO_PRIV | --1028 | |
RDB$_NOT_VALID | --1002 | |
RDB$_OBSOLETE_METADATA | --1032 | |
RDB$_READ_ONLY_REL | --1031 | |
RDB$_READ_ONLY_TRANS | --817 | |
RDB$_READ_ONLY_VIEW | --1031 | |
RDB$_REQ_NO_TRANS | なし1 | |
RDB$_REQ_WRONG_DB | --1020 | |
RDB$_UNRES_REL | --1033 | |
OPEN | RDB$_DEADLOCK | --913 |
RDB$_LOCK_CONFLICT | --1003 | |
ROLLBACK | SQL$_NO_TXNOUT | --1005 |
SET TRANSACTION | RDB$_DEADLOCK | --913 |
RDB$_LOCK_CONFLICT | --1003 | |
SQL$_BAD_TXN_STATE | --1004 | |
シングルトンSELECT | RDB$_DEADLOCK | --913 |
RDB$_LOCK_CONFLICT | --1003 | |
SQL$_NULLNOIND | --305 | |
SQL$_SELMORVAL | --811 | |
UPDATE | RDB$_DEADLOCK | --913 |
RDB$_INTEG_FAIL | --1001 | |
RDB$_LOCK_CONFLICT | --1003 | |
RDB$_NO_DUP | --803 | |
RDB$_NOT_VALID | --1002 | |
RDB$_READ_ONLY_REL | --1031 | |
UPDATE...WHERE | RDB$_DEADLOCK | --913 |
CURRENT OF... | RDB$_INTEG_FAIL | --1001 |
RDB$_LOCK_CONFLICT | --1003 | |
RDB$_NO_DUP | --803 | |
RDB$_NOT_VALID | --1002 | |
SQL$_CURNOTOPE | --501 | |
SQL$_FETNOTDON | --508 |
SQLプリコンパイラおよびSQLモジュール言語プロセッサでは、ANSI/ISO SQL規格に準拠していない構文の識別(フラグ付け)が可能です。詳細は、第3章および第4章を参照してください。
SQLプリコンパイラおよびSQLモジュール言語のエラー・メッセージには、次のようにフラグが付けられます。
EXEC SQL SELECT SUM(DISTINCT QTY), AVG(DISTINCT QTY) /* multiple distincts*/ %SQL-I-NONSTADIS, (1) The standard only permits one DISTINCT in a select expression INTO :int1, :int2 FROM D.SP; /* in a query */ |