Oracle Predefined PL/SQL Exceptions 预定义异常

Predefined PL/sql Exceptions


An internal exception is raised implicitly whenever your PL/sql program violates an Oracle rule or exceeds a system-dependent limit. Every Oracle error has a number,but exceptions must be handled by name. So,PL/sql predefines some common Oracle errors as exceptions. For example,PL/sql raises the predefined exceptionNO_DATA_FOUNDif aSELECTINTOstatement returns no rows.


To handle other Oracle errors,you can use theOTHERShandler. The functionssqlCODEandsqlERRMare especially useful in theOTHERShandler because they return the Oracle error code and message text. Alternatively,you can use the pragmaEXCEPTION_INITto associate exception names with Oracle error codes.


PL/sql declares predefined exceptions globally in packageSTANDARD,which defines the PL/sql environment. So,you need not declare them yourself. You can write handlers for predefined exceptions using the names in the following list:


Exception Oracle Error sqlCODE Value

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

-1

INVALID_CURSOR

ORA-01001

-1001

INVALID_NUMBER

ORA-01722

-1722

LOGIN_DENIED

ORA-01017

-1017

NO_DATA_FOUND

ORA-01403

+100

NOT_LOGGED_ON

ORA-01012

-1012

PROGRAM_ERROR

ORA-06501

-6501

ROWTYPE_MISMATCH

ORA-06504

-6504

SELF_IS_NULL

ORA-30625

-30625

STORAGE_ERROR

ORA-06500

-6500

SUBSCRIPT_BEYOND_COUNT

ORA-06533

-6533

SUBSCRIPT_OUTSIDE_LIMIT

ORA-06532

-6532

SYS_INVALID_ROWID

ORA-01410

-1410

TIMEOUT_ON_RESOURCE

ORA-00051

-51

TOO_MANY_ROWS

ORA-01422

-1422

VALUE_ERROR

ORA-06502

-6502

ZERO_DIVIDE

ORA-01476

-1476


Brief descriptions of the predefined exceptions follow:


Exception Raised when ...

ACCESS_INTO_NULL

Your program attempts to assign values to the attributes of an uninitialized (atomically null) object.

CASE_NOT_FOUND

None of the choices in theWHENclauses of aCASEstatement is selected,and there is noELSEclause.

COLLECTION_IS_NULL

Your program attempts to apply collection methods other than EXISTS to an uninitialized (atomically null) nested table or varray,or the program attempts to assign values to the elements of an uninitialized nested table or varray.

CURSOR_ALREADY_OPEN

Your program attempts to open an already open cursor. A cursor must be closed before it can be reopened. A cursor FOR loop automatically opens the cursor to which it refers. So,your program cannot open that cursor inside the loop.

DUP_VAL_ON_INDEX

Your program attempts to store duplicate values in a database column that is constrained by a unique index.

INVALID_CURSOR

Your program attempts an illegal cursor operation such as closing an unopened cursor.

INVALID_NUMBER

In a sql statement,the conversion of a character string into a number fails because the string does not represent a valid number. (In procedural statements,VALUE_ERROR is raised.) This exception is also raised when theLIMIT-clause expression in a bulkFETCHstatement does not evaluate to a positive number.

LOGIN_DENIED

Your program attempts to log on to Oracle with an invalid username and/or password.

NO_DATA_FOUND

A SELECT INTO statement returns no rows,or your program references a deleted element in a nested table or an uninitialized element in an index-by table. sql aggregate functions such as AVG and SUM always return a value or a null. So,a SELECT INTO statement that calls an aggregate function never raises NO_DATA_FOUND. The FETCH statement is expected to return no rows eventually,so when that happens,no exception is raised.

NOT_LOGGED_ON

Your program issues a database call without being connected to Oracle.

PROGRAM_ERROR

PL/sql has an internal problem.

ROWTYPE_MISMATCH

The host cursor variable and PL/sql cursor variable involved in an assignment have incompatible return types. For example,when an open host cursor variable is passed to a stored subprogram,the return types of the actual and formal parameters must be compatible.

SELF_IS_NULL

Your program attempts to call a MEMBER method on a null instance. That is,the built-in parameter SELF (which is always the first parameter passed to a MEMBER method) is null.

STORAGE_ERROR

PL/sql runs out of memory or memory has been corrupted.

SUBSCRIPT_BEYOND_COUNT

Your program references a nested table or varray element using an index number larger than the number of elements in the collection.

SUBSCRIPT_OUTSIDE_LIMIT

Your program references a nested table or varray element using an index number (-1 for example) that is outside the legal range.

SYS_INVALID_ROWID

The conversion of a character string into a universal rowid fails because the character string does not represent a valid rowid.

TIMEOUT_ON_RESOURCE

A time-out occurs while Oracle is waiting for a resource.

TOO_MANY_ROWS

A SELECT INTO statement returns more than one row.

VALUE_ERROR

An arithmetic,conversion,truncation,or size-constraint error occurs. For example,when your program selects a column value into a character variable,if the value is longer than the declared length of the variable,PL/sql aborts the assignment and raises VALUE_ERROR. In procedural statements,VALUE_ERROR is raised if the conversion of a character string into a number fails. (In sql statements,INVALID_NUMBER is raised.)

ZERO_DIVIDE

Your program attempts to divide a number by zero.


Oracle PL/sql Exception 传送门:http://docs.oracle.com/cd/B10500_01/appdev.920/a96624/07_errs.htm

相关文章

数据库版本:11.2.0.4 RAC(1)问题现象从EM里面可以看到,在23号早上8:45~8:55时,数据库等待会话暴增...
(一)问题背景最近在对一个大约200万行数据的表查看执行计划时,发现存在异常,理论上应该返回100多万...
(一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RM...
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文...
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup)、修复(restore)和恢复...
(1)备份对象 可以使用RMAN进行的备份对象如下: --整个数据库:备份所有的数据文件和控制文件; --数...