| Symfoware Parallel Server RDBユーザーズガイド 応用プログラム開発編 |
目次
索引
![]()
|
応用プログラム中で、SQL文の実行結果は状態変数のSQLSTATEに通知されます。したがって、応用プログラムは、SQL文を実行するたびにSQLSTATEをチェックして、Symfoware/RDBの処理結果を確認しながら処理を進めることができます。
状態変数のSQLSTATEは、5桁の文字列型の変数です。SQL文を実行した結果、SQLSTATEに設定される値を“状態コード”と呼びます。状態コードの先頭の2桁を“例外コード”と呼び、うしろの3桁を“副例外コード”と呼びます。
表:SQLSTATE値に、SQL文の実行結果に対するコードの値を示します。
|
例外コード |
例外条件 |
副例外 |
副例外コードの意味 |
|---|---|---|---|
|
00 |
正常終了 |
000 |
なし |
|
01 |
警告 |
005 |
なし |
|
02 |
データなし |
000 |
なし |
|
07 |
動的SQLエラー |
000 |
なし |
|
001 |
USING句が被準備文内の動的パラメタと対応しない |
||
|
002 |
USING句が被準備文内の選択リスト(相手指定)と一致しない |
||
|
003 |
被準備文が<カーソル指定>である |
||
|
004 |
動的パラメタ指定に対するUSING句が指定されていない |
||
|
005 |
被準備文が<カーソル指定>でない |
||
|
006 |
埋め込みホスト変数属性違反(制限されたデータ型属性を指定) |
||
|
007 |
(相手指定に対する)結果USINGが指定されていない |
||
|
008 |
SQL記述子域の個数不当 |
||
|
009 |
SQL記述子域のインデックス不当 |
||
|
08 |
コネクション違反 |
000 |
コネクションの利用方法の誤り |
|
002 |
使用中のコネクション |
||
|
003 |
コネクションが存在しない |
||
|
004 |
SQLサーバがSQLコネクションの接続を拒絶した |
||
|
09 |
被トリガ動作例外 |
000 |
なし |
|
0A |
未サポート機能 |
000 |
なし |
|
21 |
基数違反 |
000 |
単一行SELECT文の実行で2行以上が検索された、または、比較述語に直接含まれる副問合せの結果が2行以上検索された |
|
22 |
データ例外 |
001 |
文字データの右側を切り捨てた(トランケート) |
|
002 |
ナル値を設定する標識変数の指定がない |
||
|
003 |
扱える数値の範囲を超えた |
||
|
005 |
代入規則違反 |
||
|
008 |
扱える日時の範囲を超えた |
||
|
011 |
部分文字列の指定に誤り |
||
|
012 |
除数0による除算 |
||
|
015 |
扱える時間隔の範囲を超えた |
||
|
018 |
型変換を行う文字列の形式に誤り |
||
|
019 |
エスケープ文字の不当 |
||
|
024 |
正しくない文字型ホスト変数(入力ホスト変数の定義サイズ内にナル文字が存在していない) |
||
|
027 |
TRIM文字の指定に誤り |
||
|
701 |
正しくない可変長文字列(長さ部の値が0未満、または、定義サイズを超えている) |
||
|
702 |
DSI範囲外アクセス |
||
|
703 |
正しくない数値(固定小数点の符号部の値が不当) |
||
|
704 |
正しくない文字(各国語文字列の値が不当) |
||
|
23 |
NOTNULL制約違反,一意性制約違反 |
000 |
なし |
|
24 |
カーソル状態不当 |
000 |
なし |
|
25 |
トランザクション状態不当 |
000 |
なし |
|
26 |
SQL文識別子不当 |
000 |
なし |
|
28 |
パスワードが不当 |
000 |
なし |
|
2E |
コネクション名が不当 |
000 |
なし |
|
2F |
ルーチン呼び出しエラー |
000 |
なし |
|
33 |
記述子名不当 |
000 |
なし |
|
34 |
カーソル名不当 |
000 |
なし |
|
37 |
SQL文構文エラー |
000 |
なし |
|
3D |
カタログ名不当 |
000 |
なし |
|
3F |
スキーマ名不当 |
000 |
なし |
|
40 |
トランザクションロールバック |
001 |
トランザクション直列化に失敗または実時間オーバー |
|
003 |
文終了不明(処理時間オーバーまたは強制終了) |
||
|
701 |
テンポラリログ領域不足 |
||
|
702 |
COMMIT実行時エラー |
||
|
801 |
定義系処理異常 |
||
|
42 |
アクセス規則違反 |
000 |
権限なし |
|
44 |
ビューに対する更新でWITHCHECKOPTIONに違反 |
000 |
なし |
|
70 |
定量制限 |
000 |
なし |
|
71 |
環境不整合または運用矛盾 |
000 |
OSの制限値を超えた |
|
001 |
Symfoware/RDBが未起動 |
||
|
002 |
サーバシステムが未起動 |
||
|
010 |
環境変数または、動作環境ファイルの形式が不当 |
||
|
020 |
Symfoware/RDBの制限値を超えた |
||
|
71 |
環境不整合または運用矛盾 |
030 |
Symfoware/RDB環境矛盾 |
|
210 |
DSIが未定義またはDSIが未選択 |
||
|
220 |
DSIが未フォーマット |
||
|
300 |
カーソル矛盾 |
||
|
400 |
利用規定(注) |
||
|
410 |
アクセス禁止 |
||
|
500 |
データベース未定義またはDSO未定義 |
||
|
600 |
セションロック不可状態 |
||
|
700 |
トランザクションの実行多重度オーバー |
||
|
710 |
リカバリ要状態 |
||
|
720 |
データベースまたは、RDBディクショナリの矛盾 |
||
|
730 |
定義系処理異常 |
||
|
740 |
分割転送での矛盾 |
||
|
800 |
DSI自動容量拡張での異常 |
||
|
72 |
外部記憶領域等の不足 |
000 |
DSIの格納領域不足 |
|
010 |
データベーススペース不足 |
||
|
100 |
ディレクトリ領域不足 |
||
|
72 |
外部記憶領域等の不足 |
200 |
作業用テーブル領域不足 |
|
73 |
メモリの領域不足 |
100 |
ローカルメモリのプール数が設定上限値を超えた |
|
110 |
ローカルメモリの不足 |
||
|
200 |
共用メモリのプール数が設定上限値を超えた |
||
|
210 |
共用メモリの不足 |
||
|
300 |
共用バッファの不足 |
||
|
74 |
外部記憶領域への入出力異常 |
000 |
データベーススペースの入出力異常 |
|
010 |
データベーススペースのアクセス権なし |
||
|
100 |
ディレクトリ領域への入出力異常 |
||
|
110 |
ディレクトリ領域のアクセス権なし |
||
|
200 |
作業用ファイルの入出力異常 |
||
|
210 |
作業用ファイルのアクセス権なし |
||
|
400 |
テンポラリログ領域の入出力異常 |
||
|
410 |
テンポラリログ領域のアクセス権なし |
||
|
500 |
スナップファイルへの入出力異常 |
||
|
600 |
その他のファイルの入出力異常 |
||
|
610 |
アクセス権なし |
||
|
720 |
RDBディクショナリの入出力異常 |
||
|
75 |
コネクション環境異常 |
000 |
コネクション実行環境の異常 |
|
76 |
システム環境異常 |
000 |
システム異常 |
注)RDA接続の場合のみ指定可能です。
RDA: SERVER_SPECでRDAを指定した場合の有効性
SQL文を実行した結果により、トランザクションは開始された状態が継続される場合と、終了されて応用プログラムに復帰する場合があります。また、SQL文でエラーが発生した場合のトランザクションの扱いを、動作環境ファイルのパラメタTRAN_SPECで指定することができます。動作環境ファイルについては、“応用プログラムの動作環境のチューニング”を参照してください。
表:SQLSTATE値とトランザクションの関係に、これらの関係を示します。
|
TRAN_SPEC(注) |
SQLSTATEの例外コード |
復帰時のトランザクションの状態 |
応用プログラムでの対処 |
|---|---|---|---|
|
NONE |
00、02 |
トランザクションは開始された状態が継続しています。 |
そのまま次の処理に進みます。 |
|
40 |
トランザクションはロールバックされ終了しています。 |
無効となったトランザクションを再実行(リトライ)するかどうかを決定します。 |
|
|
上記以外 |
トランザクションは開始された状態が継続しています。該当のSQL文によるデータベースの更新は、実行直前の状態に戻されています。ただし、それまでに獲得されたデータベース資源のロックとカーソルの位置はそのまま保持されます。 |
エラーの原因によりトランザクションを継続させるか終了させるかを決定します。 |
|
|
TRANSACTION_ROLLBACK |
00、02 |
トランザクションは開始された状態が継続しています。 |
そのまま次の処理に進みます。 |
|
40 |
トランザクションはロールバックされ終了しています。 |
無効となったトランザクションを再実行(リトライ)するかどうかを決定します。 |
|
|
上記以外 |
トランザクションはロールバックされ終了しています。 |
エラーの原因を取り除いて、トランザクションの処理を最初からやり直す必要があります。このためSQL文の実行でエラーを起こさないように、応用プログラムで入力データのチェック等を行います。 |
目次
索引
![]()
|