PL SQL 事前定義例外一覧

2021-04-25 16:30:13 字數 3218 閱讀 8348

pl/sql にはエラーハンドリング用に以下の必要最低限な例外だけが定義されている。これらは sys.standard パッケージ に定義されている內容である。一見すると例外の數が非常に少ないが、この程度の例外といくつかのユーザ定義例外だけで結構組みあげることができてしまう。

その中でも、主に使うのは dup_val_on_index、no_data_found、timeout_on_resource、others に集中すると思う。

もちろん、これ以外にも多くのストアドパッケージに固有の例外が定義されているので、それを使うこともある。特にファイル i/o などのパッケージを使用する場合には例外処理(ファイナル処理)を必ず行ない、ファイルをオープンしたままにはしないなどの配慮を行なう。

例外名

ora-***xx

sqlcode

access_into_null

ora-06530

-6530

case_not_found

ora-06592

-6592

collection_is_null

ora-06531

-6531

cursor_already_open

ora-06511

-6511

dup_val_on_index

ora-00001

-1invalid_cursor

ora-01001

-1001

invalid_number

ora-01722

-1722

login_denied

ora-01017

-1017

no_data_found

ora-01403

100no_data_needed

ora-06548

-6548

not_logged_on

ora-01012

-1012

program_error

ora-06501

-6501

rowtype_mismatch

ora-06504

-6504

self_is_null

ora-30625

-30625

subscript_beyond_count

ora-06533

-6533

subscript_outside_limit

ora-06532

-6532

sys_invalid_rowid

ora-01410

-1410

storage_error

ora-06500

-6500

timeout_on_resource

ora-00051

-51too_many_rows

ora-01422

-1422

userenv_commitscn_error

ora-1725

-1725

transaction_backed_out

ora-00061

-61value_error

ora-06502

-6502

zero_divide

ora-01476

-1476

others--

collection_is_null

アトミック・ヌル のコレクションに対して操作を行なった場合

コンストラクタを呼び出してコレクションを初期化する。

cursor_already_open

カーソルの二重オープン

dup_val_on_index

一意性の制約違反

invalid_cursor

オープンしていない

カーソル に操作している、以下の if 処理を參考に

if cursor_name%isopen then ~

invalid_number

數値に変換できない。select decode(num_date, 1, 'aaa') ~ などの數値專案に対して文字を変換すると発生したりする。(

nvl 関數 でも同じ)

⇒ ora-01722: 數値が無効です。

login_denied

ログインの失敗(拒否)

no_data_found

すべてのレコードが既にフェッチ済、もしくは 該當するものがない。

not_logged_on

接続が切斷された。(接続中の場合には、サーバーのアラートログやクライアントの sqlnet.log を參照)

program_error

oracle サポート行き。

storage_error

メモリエラー oracle サポート行き。

subscript_beyond_count

コレクション型において添え字が要素數を超過部分にアクセスしている場合に発生。

subscript_beyond_count

コレクション型において添え字が有効範囲外。

timeout_on_resource

select ~

for update nowait のロック取得失敗に発生。

too_many_rows

単一レコードしか許されない部分で複數行処理戻されている。

select ~ into ~に対して複數行戻す sql になっている。

userenv_commitscn_error

userenv('commitscn') を insert/update 以外で使用時に発生。

⇒ システム変更番號

transaction_backed_out

共有インスタンス の dml_ locks 初期化パラメータの値がお互いに矛盾している。

value_error

數値のオーバーフローや not null 制約に違反している。

參考:

ora-06502: pl/sql: 數値または値のエラー: 文字列バッファが小さすぎます

zero_divide

ゼロ除算

others

すべての例外をあらわす。

PL SQL預定義異常

異常 說明 access into null 未定義物件 case not found case 中若未包含相應的 when 並且沒有設定 else 時 collection is null 集合元素未初始化 curser already open 游標已經開啟 dup val on index 唯...

PL SQL 學習筆記 (13)例外之自定義例外

自定義例外 定義變數,型別是 exception 使用raise拋出自定義例外。例子 查詢50號部門的員工姓名 1 自定義例外 查詢50號部門的員工姓名 2set serveroutput on34 declare5 定義游標,代表50號部門的員工姓名 6cursor cemp is select ...

PL SQL基礎 定義並使用變數

介紹 在編寫pl sql程式時,可以定義變數和常量 在pl sql程式中包括有 標量型別 復合型別 參照型別 lob 標量 常用型別 在編寫pl sql塊時,如果要使用變數,需在定義部分定義變數。pl sql中定義變數和常量的語法如下 定義乙個變長字串 v ename varchar2 10 定義乙...