Oracle例外定义

例外名ORA-XXXXXSQLCODE
ACCESS_INTO_NULLORA-06530-6530
CASE_NOT_FOUNDORA-06592-6592
COLLECTION_IS_NULLORA-06531-6531
CURSOR_ALREADY_OPENORA-06511-6511
DUP_VAL_ON_INDEXORA-00001-1
INVALID_CURSORORA-01001-1001
INVALID_NUMBERORA-01722-1722
LOGIN_DENIEDORA-01017-1017
NO_DATA_FOUNDORA-01403100
NO_DATA_NEEDEDORA-06548-6548
NOT_LOGGED_ONORA-01012-1012
PROGRAM_ERRORORA-06501-6501
ROWTYPE_MISMATCHORA-06504-6504
SELF_IS_NULLORA-30625-30625
SUBSCRIPT_BEYOND_COUNTORA-06533-6533
SUBSCRIPT_OUTSIDE_LIMITORA-06532-6532
SYS_INVALID_ROWIDORA-01410-1410
STORAGE_ERRORORA-06500-6500
TIMEOUT_ON_RESOURCEORA-00051-51
TOO_MANY_ROWSORA-01422-1422
USERENV_COMMITSCN_ERRORORA-1725-1725
TRANSACTION_BACKED_OUTORA-00061-61
VALUE_ERRORORA-06502-6502
ZERO_DIVIDEORA-01476-1476
OTHERS--
COLLECTION_IS_NULL
アトミック・ヌル のコレクションに対して操作を行なった場合
コンストラクタを呼び出してコレクションを初期化する。
CURSOR_ALREADY_OPEN
カーソルの二重オープン
DUP_VAL_ON_INDEX
一意性の制約違反 
⇒  ORA-00001: 一意制約に反しています
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
すべての例外をあらわす。
EXCEPTION
    WHEN DUP_VAL_ON_INDEX THEN
      ---RAISE_APPLICATION_ERROR(-20000,'It is will not be repeated');
      ROLLBACK;
     WHEN others then
     dbms_output.put_line('other error'); 

  

oracle判断是否执行成功
begin
insert into ...
-- rowcount 表示影响的行数,如果为0表示没有成功插入
if sql%rowcount > 0 then
commit;
else
rollback;
end if;
end; 热心网友 

  

转载于:https://www.cnblogs.com/coolicer/p/4566248.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值