Код ошибки оракл

This page contains an Oracle SQLCODE list of errors that you may encounter when working with Oracle SQL. The codes are ANSI-standard, which means you should find them with all relational databases.s

The list of SQLCODE messages is shown below.

Code Explanation -7 Statement contains the illegal character character -10 The string constant beginning string is not terminated -29 Into clause required -60 Invalid type specification : spec -84 Unacceptable SQL statement -101 The statement is too long or too complex -102 Literal string is too long. string begins string -103 literal is an invalid numeric literal -104 Illegal symbol “token”. some symbols that might be legal are: token-list -105 Invalid string -107 The name name is too long. maximum allowable size is size -109 clause clause is not permitted -110 Invalid hexadecimal literal beginning string -111 A column function does not include a column name -112 The operand of a column function is another column function -113 Invalid character found in string, reason code – nnn -114 The location name location does not match the current server -115 A predicate is invalid because the comparison operator operator is followed by a parenthesized list or by any or all without a subquery -117 The number of insert values is not the same as the number of object columns -118 The object table or view of the insert, delete, or update statement is also identified in a from clause -119 A column identified in a having clause is not included in the group by clause -120 A where clause or set clause includes a column function -121 The column name is identified more than once in the insert or update statement -122 A select statement with no group by clause contains a column name and a column function in the select clause or a column name is contained in the select clause but not in the group by clause -125 An integer in the order by clause does not identify a column of the result -126 The select statement contains both an update clause and an order by clause -127 Distinct is specified more than once in a subselect -128 Invalid use of NULL in a predicate -129 The statement contains too many table names -130 The escape clause consists of more than one character, or the string pattern contains an invalid occurrence of the escape character -131 Statement with like predicate has incompatible data types -132 A like predicate is invalid because the second operand is not a string -133 A column function in a subquery of a having clause is invalid because all column references in its argument are not correlated to the group by result that the having clause is applied to -134 Improper use of long string column column-name or a host variable of maximum length greater than 254 -136 Sort cannot be executed because the sort key length is greater than 4000 bytes -137 Result of concatenation too long -138 The second or third argument of the substr function is out of range -144 Invalid section number number -150 The object of the insert, delete, or update statement is a view for which the requested operation is not permitted -151 The update statement is invalid because the catalog description of column column-name indicates that it cannot be updated -152 The drop clause clause in the alter statement is invalid because constraint-name is a constraint-type -153 The create view statement does not include a required column list -154 The create view failed because the view definition contains a union, a union all, or a remote object -156 The statement does not identify a table -157 Only a table name can be specified in a foreign key clause. object-name is not the name of a table. -158 The number of columns specified for the view is not the same as the number of columns specified by the select clause -159 Drop or comment on token identifies a(n) token rather than a(n) token -160 The with check option cannot be used for the specified view -161 The insert or update is not allowed because a resulting row does not satisfy the view definition -164 auth-id1 does not have the privilege to create a view with qualification authorization id -170 The number of arguments specified for function-name is invalid -171 The data type, length, or value of argument nn of function-name is invalid -173 UR is specified on the with clause but the cursor is not read-only -180 The string representation of a datetime value has invalid syntax -181 The string representation of a datetime value is not a valid datetime value -182 An arithmetic expression with a datetime value is invalid -183 An arithmetic operation on a date or timestamp has a result that is not within the valid range of dates -184 An arithmetic expression with a datetime value contains a parameter marker -185 The local format option has been used with a date or time and no local exit has been installed -186 The local date length or local time length has been increased and executing program relies on the old length -187 A reference to a current date/time special register is invalid because the mvs tod clock is bad or the mvs parmtz is out of range -188 The string representation of a name is invalid -189 Ccsid ccsid is unknown or invalid for the data type or subtype -191 A string cannot be used because it is invalid mixed data -197 Qualified column names in order by clause not permitted when union or union all specified -198 The operand of the prepare or execute immediate statement is blank or empty -199 Illegal use of keyword keyword. token token-list was expected -203 A reference to column column-name is ambiguous -204 name is an undefined name -205 column-name is not a column of table table-name -206 column-name is not a column of an inserted table, updated table, or any table identified in a from clause -208 The order by clause is invalid because column name is not part of the result table -198 The operand of the prepare or execute immediate statement is blank or empty -199 Illegal use of keyword keyword. token token-list was expected -203 A reference to column column-name is ambiguous -204 name is an undefined name -205 column-name is not a column of table table-name -206 column-name is not a column of an inserted table, updated table, or any table identified in a from clause -208 The order by clause is invalid because column name is not part of the result table -219 The required explanation table table-name does not exist -220 The column column-name in explanation table table-name is not defined properly -221 “set of optional columns” in explanation table table-name is incomplete. optional column column-name is missing -250 The local location name is not defined when processing a three-part object name -251 Token name is not valid -300 The string contained in host variable or parameter position-number is not nul-terminated -301 The value of input host variable or parameter number position-number cannot be used as specified because of its data type -302 The value of input variable or parameter number position-number is invalid or too large for the target column or the target value -303 A value cannot be assigned to output host variable number position-number because the data types are not comparable -304 A value with data type data-type1 cannot be assigned to a host variable because the value is not within the range of the host variable in position position-number with data type data-type2 -305 The NULL value cannot be assigned to output host variable number position-number because no indicator variable is specified -309 A predicate is invalid because a referenced host variable has the NULL value -310 Decimal host variable or parameter number contains non decimal data. -311 The length of input host variable number position-number is negative or greater than the maximum -312 Undefined or unusable host variable variable-name -313 The number of host variables specified is not equal to the number of parameter markers -314 The statement contains an ambiguous host variable reference -330 A string cannot be used because it cannot be translated. reason reason-code, character code-point, host variable position-number -331 A string cannot be assigned to a host variable because it cannot be translated. reason reason-code, character code-point, position position-number -332 Sysstrings does not define a translation from ccsid ccsid to ccsid -333 The subtype of a string variable is not the same as the subtype known at bind time and the difference cannot be resolved by translation -338 An on clause is invalid -339 The SQL statement cannot be executed from an ascii based drda application requestor to a v2r2 db2 subsystem -351 An unsupported SQLtype was encountered in position “” on a prepare or describe operation -400 The catalog has the maximum number of user defined indexes -401 The operands of an arithmetic or comparison operation are not comparable -402 An arithmetic function or operator arith-fop is applied to character or datetime data -404 The update or insert statement specifies a string that is too long column-name -405 The numeric literal literal cannot be used as specified because it is out of range -406 A calculated or derived numeric value is not within the range of its object column -407 An update or insert value is NULL, but the object column column-name cannot contain NULL values -408 An update or insert value is not comparable with the data type of its object column column-name -409 Invalid operand of a count function -410 The floating point literal literal contains more than 30 characters -411 Current SQLid cannot be used in a statement that references remote objects -412 The select clause of a subquery specifies multiple columns -414 A like predicate is invalid because the first operand is not a string -415 The corresponding columns, column-number, of the operands of a union or a union all do not have comparable column descriptions -416 An operand of a union contains a long string column -417 A statement string to be prepared includes parameter markers as the operands of the same operator -418 A statement string to be prepared contains an invalid use of parameter markers -419 The decimal divide operation is invalid because the result would have a negative scale -420 The value of a character string argument was not acceptable to the function-name function -421 The operands of a union or union all do not have the same number of columns -426 Dynamic commit not valid at an application server where updates are not allowed -427 Dynamic rollback not valid at an application server where updates are not allowed -440 The number of parameters in the parameter list does not match the number of parameters expected for stored procedure name, authid authid, luname luname. number parameters were expected. -444 User program name could not be found -450 Stored procedure name, parameter number number, overlayed storage beyond its declared length -469 SQL call statement must specify an output host variable for parameter number. -470 SQL call statement specified a NULL value for input parameter number, but the stored procedure does not support NULL values -471 SQL call for stored procedure name failed due to reason rc -500 The identified cursor was closed when the connection was destroyed -501 The cursor identified in a fetch or close statement is not open -502 The cursor identified in an open statement is already open -503 A column cannot be updated because it is not identified in the update clause of the select statement of the cursor -504 The cursor name cursor-name is not defined -507 The cursor identified in the update or delete statement is not open -508 The cursor identified in the update or delete statement is not positioned on a row -509 The table identified in the update or delete statement is not the same table designated by the cursor -510 The table designated by the cursor of the update or delete statement cannot be modified -511 The for update clause cannot be specified because the table designated by the cursor cannot be modified -512 Statement reference to remote object is invalid -513 The alias alias-name must not be defined on another local or remote alias -514 The cursor cursor-name is not in a prepared state -516 The describe statement does not identify a prepared statement -517 Cursor cursor-name cannot be used because its statement name does not identify a prepared select statement -518 The execute statement does not identify a valid prepared statement -519 The prepare statement identifies the select statement of the opened cursor cursor-name -525 The SQL statement cannot be executed because it was in error at bind time for section = sectno package = pkgname consistency token = x’contoken’ -530 The insert or update value of foreign key constraint-name is invalid -531 The primary key in a parent row cannot be updated because it has one or more dependent rows in relationship constraint-name -532 The relationship constraint-name restricts the deletion of row with rid x’rid-number’ -533 Invalid multiple-row insert -534 The primary key cannot be updated because of multiple-row update -536 The delete statement is invalid because table table-name can be affected by the operation -537 The primary key clause, a foreign key clause, or a unique clause identifies column column-name more than once -538 Foreign key name does not conform to the description of the primary key of table table-name -539 Table table-name does not have a primary key -540 The definition of table table-name is incomplete because it lacks a primary index or a required unique index -542 column-name cannot be a column of a primary key or a unique constraint because it can contain NULL values -543 A row in a parent table cannot be deleted because the check constraint check-constraint restricts the deletion -544 The check constraint specified in the alter table statement cannot be added because an existing row violates the check constraint -545 The requested operation is not allowed because a row does not satisfy the check constraint check-constraint -546 The check constraint constraint-name is invalid -548 A check constraint that is defined with column-name is invalid -549 The statement statement is not allowed for object_type1 object_name because the bind option dynamicrules(bind) in the object_type2 is in effect -551 auth-id does not have the privilege to perform operation operation on object object-name -552 auth-id does not have the privilege to perform operation operation -553 auth-id specified is not one of the valid authorization ids -554 An authorization id cannot grant a privilege to itself -555 An authorization id cannot revoke a privilege from itself -556 authid2 cannot have the privilege privilege on_object revoked by authid1 because the revokee does not possess the privilege or the revoker did not make the grant -557 Inconsistent grant/revoke keyword keyword. permitted keywords are keyword-list -558 Invalid clause or combination of clauses on a grant or revoke -559 All authorization functions have been disabled -567 bind-type authorization error using auth-id authority package = package-name privilege = privilege -571 The statement would result in a multiple site update -574 The specified default value conflicts with the column definition. -601 The name of the object to be created is identical to the existing name name of the object type obj-type -602 Too many columns specified in a create index -603 A unique index cannot be created because the table contains rows which are duplicates with respect to the values of the identified columns -604 A column definition specifies an invalid length, precision, or scale attribute -607 Operation or option operation is not defined for this object -611 Only lockmax 0 can be specified when the lock size of the tablespace is tablespace or table -612 column-name is a duplicate column name -613 The primary key or a unique constraint is too long or has too many columns -614 The index cannot be created because the sum of the internal lengths of the identified columns is greater than the allowable maximum -615 operation-type is not allowed on a package in use -616 obj-type1 obj-name1 cannot be dropped because it is referenced by obj-type2 obj-name2 -617 A type 1 index cannot be defined on a table in a table space with locksize row -618 Operation operation is not allowed on system databases -619 Operation disallowed because the work file database is not stopped -620 Keyword keyword in stmt type statement is not permitted for a table space in the work file database -621 Duplicate dbid dbid was detected and previously assigned to database-name -622 For mixed data is invalid because the mixed data install option is no -623 A clustering index already exists on table table-name -624 Table table-name already has a primary key -625 Table table-name does not have an index to enforce the uniqueness of the primary key -626 The alter statement is not executable because the page set is not stopped -627 The alter statement is invalid because the pageset has user-managed data sets -628 The clauses are mutually exclusive. -629 Set NULL cannot be specified because foreign key name cannot contain NULL values -630 The where not NULL specification is invalid for type 1 indexes -631 Foreign key name is too long or has too many columns -632 The table cannot be defined as a dependent of table-name because of delete rule restrictions -633 The delete rule must be delete-rule -634 The delete rule must not be cascade -635 The delete rules cannot be different or cannot be set NULL -636 The partitioning keys are not specified in ascending or descending order -637 Duplicate keyword keyword -638 Table table-name cannot be created because column definition is missing -639 A NULLable column of a foreign key with a delete rule of set NULL cannot be a column of the key of a partitioned index -640 Locksize row cannot be specified because table in this tablespace has type 1 index -642 Too many columns in unique constraints -643 Check constraint exceeds maximum allowable length -644 Invalid value specified for keyword keyword in stmt-type tatement -646 Table table-name cannot be created in partitioned/default table space tspace-name because it already contains a table -647 Bufferpool bp-name cannot be specified because it has not been activated -650 The alter index cannot be executed, reason reason -651 Table description exceeds maximum size of object descriptor. -652 Violation of installation defined edit or validation procedure proc-name -653 Table table-name in partitioned table space tspace-name is not available because its partitioned index has not been created -655 The create or alter stogroup is invalid because the storage group would have both specific and non-specific volume ids -660 Index index-name cannot be created on partitioned table space tspace-name because key limits are not specified -661 Index index-name cannot be created on partitioned table space tspace-name because the number of part specifications is not equal to the number of partitions of the table space -662 A partitioned index cannot be created on a non-partitioned table space tspace-name -663 The number of key limit values is either zero, or greater than the number of columns in the key of index index-name -665 The part clause of an alter statement is omitted or invalid -666 stmt-verb object cannot be executed because function is in progress -667 The clustering index for a partitioned table space cannot be explicitly dropped -668 The column cannot be added to the table because the table has an edit procedure -669 A table in a partitioned table space cannot be explicitly dropped -670 The record length of the table exceeds the page size limit -671 The bufferpool attribute of the table space cannot be altered as specified because it would change the page size of the table space -672 Operation drop not allowed on table table_name -676 A 32k page bufferpool may not be used for an index -677 Insufficient virtual storage for bufferpool expansion -678 The literal literal specified for the index limit key must conform to the data type data-type of the corresponding column column-name -679 The object name cannot be created because a drop is pending on the object -680 Too many columns specified for a table -681 Column column-name in violation of installation defined field procedure. rt: return-code, rs: reason-code, msg: message-token -682 Field procedure procedure-name could not be loaded -683 Invalid column type for fieldproc, bit data, sbcs data, or mixed data option, column-name -684 The length of literal list beginning string is too long -685 Invalid field type, column-name -686 Column defined with a field procedure can not compare with another column with different field procedure -687 Field types incomparable -688 Incorrect data returned from field procedure, column-name, msgno -689 Too many columns defined for a dependent table -690 The statement is rejected by data definition control support. reason reason-code -691 The required registration table table-name does not exist -692 The required unique index index-name for ddl registration table table-name does not exist -693 The column column-name in ddl registration table or index table-name (index-name) is not defined properly -694 The ddl statement cannot be executed because a drop is pending on the ddl registration table table-name -713 The replacement value for special-register is invalid -715 Program program-name with mark release-dependency-mark failed because it depends on functions of the release from which fallback has occurred -716 Program program-name precompiled with incorrect level for this release. -717 Bind-type for object-type object-name with mark release-dependency-mark failed because object-type depends on functions of the release from which fallback has occurred. -718 Rebind for package package-name failed because ibmreqd of ibmreqd is invalid -719 Bind add error using auth-id authority package package-name already exists -720 Bind error, attempting to replace package = package_name with version = version2 but this version already exists -721 Bind error for package = pkg-id contoken = ‘contoken’x is not unique so it cannot be created -722 Bind-type error using auth-id authority package package-name does not exist -726 Bind error attempting to replace package = . there are enable or disable entries currently associated with the package -730 The parent of a table in a read-only shared database must also be a table in a read-only shared database -731 User-defined dataset dsname must be defined with shareoptions(1,3) -732 The database is defined on this subsystem with the roshare read attribute but the table space or index space has not been defined on the owning subsystem -733 The description of a table space, index space, or table in a roshare read database must be consistent with its description in the owner system -734 The roshare attribute of a database cannot be altered from roshare read -735 Database dbid cannot be accessed because it is no longer a shared database -736 Invalid obid obid specified -737 Implicit table space not allowed -741 A work file database is already defined for member member-name -742 Dsndb07 is the implicit work file database -751 A stored procedure has been placed in must_rollback state due to SQL operation name -752 The connect statement is invalid because the process is not in the connectable state -802 Exception error ‘exception-type’ has occurred during ‘operation-type’ operation on ‘data-type’ data, position ‘position-number’ -803 An inserted or updated value is invalid because the index in index space indexspace-name constrains columns of the table so no two rows can contain duplicate values in those columns. rid of existing row is x’rid’ -804 An error was found in the application program input parameters for the SQL statement. reason reason -805 Dbrm or package name location-name.collection-id.dbrm-name.consistency -token not found in plan plan-name. reason reason -807 Access denied: package package-name is not enabled for access from connection-type connection-name -808 The connect statement is not consistent with the first connect statement -811 The result of an embedded select statement is a table of more than one row, or the result of the subquery of a basic predicate is more than one value -812 The SQL statement cannot be processed because a blank collection-id was found in the current packageset special register while trying to form a qualified package name for program program-name.consistency-token using plan plan-name -815 A group by or having clause is implicitly or explicitly specified in an embedded select statement or a subquery of a basic predicate -817 The SQL statement cannot be executed because the statement will result in a prohibited update operation -818 The precompiler-generated timestamp x in the load module is different from the bind timestamp y built from the dbrm z -819 The view cannot be processed because the length of its parse tree in the catalog is zero -820 The SQL statement cannot be processed because catalog-table contains a value that is not valid in this release -822 The SQLda contains an invalid data address or indicator variable address -840 Too many items returned in a select or insert list -842 A connection to location-name already exists -843 The set connection or release statement must specify an existing connection -870 The number of host variables in the statement is not equal to the number of descriptors -900 The SQL statement cannot be executed because the application process is not connected to an application server -901 Unsuccessful execution caused by a system error that does not preclude the successful execution of subsequent SQL statements -902 Pointer to the essential control block (ct/rda) has value 0, rebind required -904 Unsuccessful execution caused by an unavailable resource. reason reason-code, type of resource resource-type, and resource name resource-name -905 Unsuccessful execution due to resource limit being exceeded, resource name = resource-name limit = limit-amount1 cpu seconds (limit-amount2 service units) derived from limit-source -906 The SQL statement cannot be executed because this function is disabled due to a prior error -908 Bind-type error using auth-id authority bind, rebind or auto-rebind operation is not allowed -909 The object has been deleted -910 The SQL statement cannot access an object on which a drop or alter is pending -911 The current unit of work has been rolled back due to deadlock or timeout. reason reason-code, type of resource resource-type, and resource name resource-name -913 Unsuccessful execution caused by deadlock or timeout. reason code reason-code, type of resource resource-type, and resource name resource-name -917 Bind package failed -918 The SQL statement cannot be executed because a connection has been lost -919 A rollback operation is required -922 Authorization failure: error-type error. reason reason-code -923 Connection not established: db2 condition reason reason-code, type resource-type, name resource-name -924 Db2 connection internal error, function-code, return-code, reason-code -925 Commit not valid in ims/vs or cics environment -926 Rollback not valid in ims/vs or cics environment -927 The language interface (li) was called when the connecting environment was not established. the program should be invoked under the dsn command -929 Failure in a data capture exit: token -939 Rollback required due to unrequested rollback of a remote server -947 The SQL statement failed because it will change a table defined with data capture changes, but the data cannot be propagated -948 Distributed operation is invalid -950 The location name specified in the connect statement is invalid or not listed in the communications database -965 Stored procedure procname terminated abnormally -2001 The number of host variable parameters for a stored procedure is not equal to the number of expected host variable parameters. actual number SQLdanum, expected number opnum -30000 Execution failed due to a distribution protocol error that will not affect the successful execution of subsequent commands or SQL statements: reason reason-code (sub-code) -30020 Execution failed due to a distribution protocol error that caused deallocation of the conversation: reason -30021 Execution failed due to a distribution protocol error that will affect the successful execution of subsequent commands or SQL statements: manager manager at level level not supported error -30030 Commit request was unsuccessful, a distribution protocol violation has been detected, the conversation has been deallocated. original SQLcode=original-SQLcode and original SQLstate=original-SQLstate -30040 Execution failed due to unavailable resources that will not affect the successful execution of subsequent commands or SQL statements. reason type of resource resource name product id rdbname -30041 Execution failed due to unavailable resources that will affect the successful execution of subsequent commands and SQL statements reason type of resource resource name product id rdbname -30050 command or SQL statement invalid while bind process in progress -30051 Bind process with specified package name and consistency token not active -30052 Program preparation assumptions are incorrect -30053 Owner authorization failure -30060 Rdb authorization failure -30061 Rdb not found -30070 command not supported error -30071 object not supported error -30072 : parameter not supported error -30073 : parameter value not supported error -30074 Reply message with codepoint (svrcod) not supported error -30080 Communication error code (subcode) -30090 Remote operation invalid for application execution environment

EXCEPTION блок

Обработка ошибок производится в блоке exception:

begin
	-- Код
exception
	-- Обработка ошибок
	when .... then .....;
	when .... then .....;
	when .... then .....;
end;

Ошибки отлавливаются в пределах блока begin-end. Работает это так:

  1. Сначала выполняется код между begin и exception
  2. Если ошибок не произошло, тогда секция между exception и end ингорируется
  3. Если в процессе выполнения кода происходит ошибка, выполнение останавливается
    и переходит в блок exception.
  4. Если в блоке находится обработчик для исключения, вызывается код после then
  5. Если обработчик не найден, исключение выбрасывается за пределы блока begin-end

Пример блока с обработчиком исключений:

declare
    l_val number;
begin
    select 1 into l_var
    where 2 > 3;
exception
    when no_data_found then
        dbms_output.put_line('Нет данных');
    when dup_val_on_index then
        dbms_output.put_line('Такая строка уже есть');
end;

Предопределённые ошибки

Ошибки обрабатываются по их имени, поэтому часть наиболее частых ошибок в PL/SQL
уже предопределена, как например вышеуказанные no_data_found и dup_val_on_index.

Ниже показан их список и в каких случаях ошибка может возникнуть.

Ошибка Когда возникает
ACCESS_INTO_NULL Попытка присвоить значение атрибуту неинициализированного объекта.
CASE_NOT_FOUND В выражении CASE не нашлось подходящего условия When, и в нём отсутствует условие Else.
COLLECTION_IS_NULL Попытка вызвать любой метод коллеции(за исключением Exists) в неинициализированной вложенной таблице или ассоциативном массиве, или попытка присвоить значения элементам неинициализированной вложенной таблице или ассоциативного массива.
CURSOR_ALREADY_OPEN Попытка открыть уже открытый курсор. Курсор должен быть закрыт до момента его открытия. Цикл FOR автоматически открывает курсор, который использует, поэтому его нельзя открывать внутри тела цикла.
DUP_VAL_ON_INDEX Попытка вставить в таблицу значения, которые нарушают ограничения, созданные уникальным индексом. Иными словами, ошибка возникает, когда в колонки уникального индекса добавляются дублирующие записи.
INVALID_CURSOR Попытка вызова недопустимой операции с курсором, например закрытие не открытого курсора.
INVALID_NUMBER Ошибка приведения строки в число в SQL запросе, потому что строка не является числовым представлением (В PL/SQL коде в таких случаях выбрасывается VALUE_ERROR). Также может возникнуть, если значение параметра LIMIT в выражении Bulk collect не является положительным числом.
LOGIN_DENIED Попытка подключиться к БД с неправильным логином или паролем.
NO_DATA_FOUND Выражение SELECT INTO не возвращает ни одной строки, или программа ссылается на удалённый элемент во вложенной таблице или неинициализированному объекту в ассоциативной таблице. Агрегатные функции в SQL, такие как AVG или SUM, всегда возвращают значение или null. Поэтому, SELECT INTO, которое вызывает только агрегатные функции, никогда не выбросит NO_DATA_FOUND. Выражение FETCH работает так, что ожидает отсутствия строк в определённый момент, поэтому ошибка также не выбрасывается.
NOT_LOGGED_ON Обращение к БД будучи неподключенным к ней
PROGRAM_ERROR Внутренняя проблема в PL/SQL.
ROWTYPE_MISMATCH Курсорные переменные, задействованные в присваивании, имеют разные типы.
SELF_IS_NULL Попытка вызвать метод неинициализированного объекта.
STORAGE_ERROR Переполнение памяти или память повреждена.
SUBSCRIPT_BEYOND_COUNT Попытка обратиться к элементу вложенной таблицы или ассоциативного массива по индексу, который больше, чем количество элементов в коллекции.
SUBSCRIPT_OUTSIDE_LIMIT Попытка обратиться к элементу коллекции по индексу(например, -1) вне допустимого диапазона.
SYS_INVALID_ROWID Ошибка конвертации строки в rowid.
TIMEOUT_ON_RESOURCE Возникает при ожидании доступности ресурса.
TOO_MANY_ROWS Выражение SELECT INTO возвращает более одной строки.
VALUE_ERROR Арифметическая ошибка, ошибка конвертации, или превышение размерности типа. Может возникнуть, к примеру, если в переменную с типом number(1) попытаться присвоить значение 239.
ZERO_DIVIDE Попытка деления на ноль.

Объявление собственных ошибок

Можно объявлять собственные исключения, давая им
названия, которые полнее раскрывают их суть.

declare
    -- Объявление собственного исключения,
    -- которое мы выбрасываем, если значение заработной
    -- платы ниже дозволенного минимума.
    exc_too_low_salary exception;
    l_salary number := 100;
begin
    if l_salary < 200 then
        -- Бросаем ошибку.
        raise exc_too_low_salary;
    end if;

exception
    when exc_too_low_salary then
        dbms_output.put_line('Обработчик исключения');
end;

Область видимости собственного исключения в данном случае — блок, в котором оно
объявлено. Вне этого блока обработать исключение не получится.

Для более удобной работы с собственными исключениями их можно вынести в отдельный пакет:

create or replace pck_hr_errors is

-- Объявляем исключения в спецификации пакета.
-- Тела пакет не имеет, только спецификацию.

exc_wrong_name      exception;
exc_too_low_salary  exception;
exc_incorrect_pass  exception;

end;

Далее работать с этими исключениями можно подобным образом:

begin
    -- Какой-то код
    ...
exception
    when pck_hr_errors.exc_too_low_salary then
        -- Обработка исключения
        ...
end;

Обработка непредопределённых ошибок

Не все ошибки в Oracle являются предопределёнными. Когда возникает необходимость
их обрабатывать, нужно связать переменную типа exception с кодом ошибки, которую нужно обработать:

declare
    -- объявляем ошибку
    e_incorrect_date exception;

    -- связываем ошибку с кодом
    pragma exception_init(e_incorrect_date, -1830);
begin
    dbms_output.put_line(to_date('2022-02-01', 'dd.mm.yyyy'));
exception
    when e_incorrect_date then
        dbms_output.put_line ('Неправильный формат даты');
end;

Следует помнить, что коды ошибок являются отрицательными числами.

Ошибки и вложенные блоки

Если ошибка не обрабатывается в пределах блока begin ..end,
она выбрасывается за его пределы. Далее эта ошибка может быть
обработана блоком exception внешнего блока. Если и там ошибка
не обрабатывается, она выбрасывается и за его пределы, и так
далее.

declare
    a number;

-- Внешний блок
begin
    -- Вложенный блок
    begin
        a := 1 / 0;
        -- Важно помнить, что после возникновения ошибки
        -- выполнение кода в пределах блока прекращается.
        -- Следующий код не будет выполнен
        dbms_output.put_line('Этот код не будет выполнен');
    end;
exception
    when zero_divide:
        dbms_otuput.put_line('Ошибка обработана внешним блоком');
end;

raise_application_error

Если ошибка, брошенная Oracle, достигает клиентского приложения,
то она имеет примерно такой текст: ORA-01722 invalid number.

Процедура raise_application_error позволяет вызвать исключение
с заданным номером, связать его с сообщением и отправить его
вызывающему приложению.

begin
    raise_application_error(-20134, 'Неправильный номер паспорта');
end;

Диапазон возможных кодов ошибок [-20999, 20000]. Сообщение должно
помещаться в тип varchar2(2000).

Можно указать третий boolean параметр, который в случае
значения true добавит текущую ошибку в список предыдущих
ошибок, возникших в приложении. По умолчанию значение равно false,
что значит, про сообщение об ошибке заменяет все предыдущие ошибки
собой.

Мы можем объявить собственное исключение, связать его с номером
в диапазоне [-20999, 20000] и использовать для обработки исключений,
брошенных с помощью raise_application_error:

declare
    e_wrong_passport exception;
    
    -- связываем ошибку с кодом
    pragma exception_init(e_wrong_passport, -20999);
begin
    raise_application_error(-20999, 'Неправильный номер паспорта');
exception
    when e_wrong_password then
        dbms_output.put_line ('Неправильный номер паспорта');
end;

Ошибки Оракла ORA-00000 — ORA-00999



В нотной записи PL/SQL допущена нота не той октавы

Группы первой тысячи ошибок Oracle (по диапазонам кодов от 0 до 999):

  • Сообщения об ошибках ORA-00000 — ORA-00099
  • Ошибки областей и сегментов ORA-00100 — ORA-00299
  • Ошибки I/O-управления базой данных ORA-00300 — ORA-00399
  • Ошибки инициализации базы данных ORA-00400 — ORA-00499
  • Сообщения об ошибках ORA-00500 — ORA-00599
  • Ошибки аварийного восстановления ORA-00600 — ORA-00699
  • Словарные ошибки ORA-00700 — ORA-00799
  • Общие ошибки ORACLE ORA-00800 — ORA-00899
  • Синтаксические ошибки ORA-00900 — ORA-00999

Сообщения об ошибках ORA-00000 — ORA-00099

Сообщения ORA-00000 — нормальное, успешное завершение, т.е., не ошибка.

Методологические ошибки доступа к ядру 0001-0049

  • ORA-00001: Дублированный ключ в индексе
  • ORA-00017: Превышено максимальное число вызовов
  • ORA-00018: Превышено максимальное количество сеансов
  • ORA-00019: Число сеансов превысило число лицензий
  • ORA-00020: Превышено максимальное число(количество) процессов (num)
  • ORA-00021: Сеанс занят другим процессом. Не переключайте сеанс
  • ORA-00022: Неверный ID сеанса. Доступ запрещен
  • ORA-00023: Сеанс содержит ссылки на частную память. Нельзя отсоеденить сеанс
  • ORA-00024: Соединение более чем с одним процессом запрещено в однопользовательском режиме
  • ORA-00025: Невозможно разместить [значение]
  • ORA-00026: Пропущен или некорректный ID сеанса
  • ORA-00027: Невозможно уничтожить текущий сеанс
  • ORA-00028: Ваша сессия была уничтожена
  • ORA-00029: Сеанс не пользовательский сеанс
  • ORA-00030: Сеанса пользователя с указанным ID не сществует
  • ORA-00031: Сеанс помечен для уничтожения
  • ORA-00032: Неверный пароль перемещения сессии
  • ORA-00033: Текущий сеанс с пустым паролем перемещения
  • ORA-00034: Невозможно выполнить COMMIT или ROLLBACK в текущем PL/SQL сеансе
  • ORA-00035: Значение LICENSE_MAX_USERS не может быть меньше чем текущее количество пользователей
  • ORA-00036: Достигнуто максимальное количество уровней (значение) рекурсии SQL
  • ORA-00037: Невозможно переключится на сеанс другой серверной группы
  • ORA-00038: Невозможно создать сеанс. Серверная группа принадлежит другому пользователю

ENQ ошибки 0050-0080

  • ORA-00050: Ошибка операционной системы при получении очереди
  • ORA-00051: Истекло время ожидания ресурса
  • ORA-00052: Превышено максимальное число возвращаемых ресурсов
  • ORA-00053: превышено максимальное количество очередей
  • ORA-00054: Ресурс занят, при обращении с указателем NOWAIT
  • ORA-00055: Превышено максимальное количество DML блокировок
  • ORA-00056: На заблокированный объект накладывыется DDL блокировка
  • ORA-00057: Превышено максимальное количество временных блокировок таблицы
  • ORA-00058: DB_BLOCK_SIZE должен быть равным с монтируемой БД
  • ORA-00059: Превышено значение параметра DB_FILES
  • ORA-00060: Возникла мертвая блокировка во время ожидания ресурса
  • ORA-00061: Другой экземпляр имеет другие настройки DML_LOCK
  • ORA-00062: DML блокировка всей таблицы ен может быть установлена. Параметр DML_LOCKS нулевой
  • ORA-00063: Превышено значение параметра LOG_FILES
  • ORA-00064: Размещение объекта невозможно, он слишком большой для данной операционной системы
  • ORA-00065: Ошибка инициализации параметра FIXED_DATE
  • ORA-00066: Значение LOG_FILES не совпадают
  • ORA-00067: Некорректное значение для строкового параметра, должна быть строка
  • ORA-00068: Некорректное значение для строкового параметра, должно быть строковым
  • ORA-00069: Нельзя заблокировать таблицу — блокировка запрещена для [значение]
  • ORA-00070: Команда [значение] некорректна
  • ORA-00071: количество процессов должно быть от 1:
  • ORA-00072: Указанный процесс не является активным
  • ORA-00073: Указано неверное количетсво аргументов для команды
  • ORA-00074: Пооцесс не определен
  • ORA-00075: Процесс [значение] не найден в текущем экземпляре
  • ORA-00076: dump [значение] не найден
  • ORA-00077: Указанный dump некорректный
  • ORA-00078: Невозможно определить dump по имени
  • ORA-00079: Переменная [значение] не найдена
  • ORA-00080: Была попытка сделать dump неверной области памяти
  • ORA-00081: Указанный диапазон не является корректным
  • ORA-00082: Диапазон памяти не в указанном диапазоне
  • ORA-00083: Возможно повреждена SGA
  • ORA-00084: Global Area должна быть PGA, SGA или UGA
  • ORA-00085: Текущий вызов не существует
  • ORA-00086: Пользовательский вызов не существует
  • ORA-00087: Команда не может быть выполнена на удаленном экземпляре
  • ORA-00088: Команда не может быть выполнена распеределенным сервером
  • ORA-00089: Неверный номер экземпляра в команде ORADEBUG
  • ORA-00090: Команда ORADEBUG не смогла корректно выделить память в кластерной БД
  • ORA-00091: LARGE_POOL_SIZE должен быть указан
  • ORA-00092: LARGE_POOL_SIZE должен быть больше LARGE_POOL_MIN_ALLOC
  • ORA-00093: %s указан неверно
  • ORA-00094: %s должен содержать значение Integer
  • ORA-00096: Неверное значение [значение] для параметра [значение], должно быть из допустимого диапазона
  • ORA-00097: Особенности Oracle SQL не поддерживаются SQL92:
  • ORA-00099: Истекло время ожидания ресурса. Потенциальная PDML мертвая блокировка

Ошибки областей и сегментов ORA-00100 — ORA-00299

  • ORA-00100: Данных не найдено
  • ORA-00101: Неверная спецификация системного параметра DISPATCHERS
  • ORA-00102: Указанный сетевой протокол не может быть использован диспетчерами
  • ORA-00103: Неверный сетевой протокол, зарезервирован для использования диспетчерами
  • ORA-00104: Обнаружена мертвая блокировка, все доступные сервера блокированы, ожидание ресурса
  • ORA-00105: слишком много конфигураций диспетчера
  • ORA-00106: База данных не может быть простартована или остановлена пока есть соединение с диспетчером
  • ORA-00107: невозможно установить соединение с процессом прослушивателем ORACLE
  • ORA-00108: Невозможна настройка диспетчера для принятия асинхронных соединений
  • ORA-00111: Неверный аттрибут [значение]
  • ORA-00112: Значение аттрибута пусто (null)
  • ORA-00113: Наименование протокола [значение] слишком длинное
  • ORA-00114: Неверное значение для системного параметра SERVICE_NAMES
  • ORA-00115: Соединение сброшено, таблица соединений заполнена
  • ORA-00116: Значение SERVICE_NAMES некорректно
  • ORA-00117: PROTOCOL, ADDRESS или DESCRIPTION должны быть указаны
  • ORA-00118: Только одно значение PROTOCOL, ADDRESS или DESCRIPTION может быть указано
  • ORA-00119: Неверное значение системного параметра
  • ORA-00120: Диспетчер не разрешен или не установлен
  • ORA-00121: SHARED_SERVERS определен без параметра DISPATCHERS
  • ORA-00122: Невозможно проинициализорвать конфигурацию сети
  • ORA-00123: Простой общего сервера
  • ORA-00124: DISPATCHERS указан без MAX_SHARED_SERVERS
  • ORA-00125: Соединение сброшено; неверное представление
  • ORA-00126: Соединение сброшено; противоречие
  • ORA-00127: Диспетчер не существет
  • ORA-00128: Для команды требуется имя диспетчера
  • ORA-00129: Неверный адрес прослушивания
  • ORA-00130: Неверный адрес для прослушивания
  • ORA-00131: Сетевой протокол не поддерживает указанную регистрацию
  • ORA-00132: Синтаксическая ошибка или недопустимое сетевое имя
  • ORA-00150: Дублирующийся идентификатор транзакции
  • ORA-00151: Дублирующийся идентификатор транзакции
  • ORA-00152: Текущая сессия не соотвествует запрошенной
  • ORA-00153: Ошибка в библиотеке XA
  • ORA-00154: Ошибка протокола в мониторе транзакций
  • ORA-00155: Не могу выполнить задание за пределами глобальной транзакции
  • ORA-00160: Имя глобальной транзакции превышает масксимальную длину
  • ORA-00161: Длина транзакции некорректна
  • ORA-00162: Внешний идентификатор базы данных превышает маскимальное значение
  • ORA-00163: Внешнее имя базы данных превышает максимальное значение
  • ORA-00164: Распределенные автономные транзакции не разрешены поверх переносимых распределенных транзакций
  • ORA-00165: Автономные переносимые распределенные транзакции с удаленными операциями не разрешены
  • ORA-00200: Управляющий файл не может быть создан
  • ORA-00201: Версия управляющенго файла [значение] несовместима с версией ORACLE [значение]
  • ORA-00202: Управляющий файл: [значение]
  • ORA-00203: Использование неверного управляющего файла
  • ORA-00204: Ошибка чтения блока данных (блок [значение], блоков [значение]) в управляющем файле
  • ORA-00205: Ошибка идентификации управляющего файла. Смотрите лог для дополнительной информации
  • ORA-00206: Ошибка записи в управляющий файл (блок [значение], блоков [значение])
  • ORA-00207: Управляющий файл не от этой базы данных
  • ORA-00208: Количество управляющих файлов превышает допустимое значение [значение]
  • ORA-00209: Блок данных управляющего файла не совпадает. Смотрите лог для получения дополнительной информации
  • ORA-00210: Невозможно открыть указанный управляющий файл
  • ORA-00211: Управляющий файл не совпадает с предыдущим
  • ORA-00212: Размер блока [значение] меньше минимально требуемого [значение]
  • ORA-00213: Невозможно повторно использовать управляющий файл, размер файла %1: требуется %2:
  • ORA-00214: Версия управляющего файла несовместима с версией файла
  • ORA-00215: Должен быть минимум один управляющий файл
  • ORA-00216: Размер управляющего файла не может быть изменен для переноса с 8.0.2:
  • ORA-00217: Размер управляющего файла не может быть изменен для переноса с 9.0.1:
  • ORA-00218: Размер блока данных управляющих файлов не совпадает с размером указанным в параметре DB_BLOCK_SIZE
  • ORA-00219: Размер управляющего файла превышает установленный размер
  • ORA-00220: Управляющий файл не может быть подключен, смотрите alert-log для более детальной информации
  • ORA-00221: Ошибка записи в управляющий файл
  • ORA-00222: Операция пытается использовать имя уже примонтированного управляющего файла
  • ORA-00223: Конвертируемый файл неверный или имеет неверную версию
  • ORA-00224: Неудачное изменение размера управляющего файла с неверным типом записи
  • ORA-00225: Ожидаемый размер управляющего файла [значение] отличается от актуального [значение]
  • ORA-00226: Операция невозможна пока альтернативный управляющий файл открыт
  • ORA-00227: В управляющем файле найден поврежденный блок данных (блок [значение] блоков [значение]).
  • ORA-00228: Длина имени альтернативного контрольного файла превышает допустимое значение [значение]
  • ORA-00229: Операция запрещена. Файл-снимок (snapshot) уже помещен в очередь и занят процессом
  • ORA-00230: Операция запрещена. Очередь снимоков контрольного файла недоступна
  • ORA-00231: Снимок управляющего файла не назван
  • ORA-00232: Снимок управляющего файла не существует, поврежден или нечитаемый
  • ORA-00233: Копия управляющего файла повреждена или нечитаема
  • ORA-00234: Ошибка идентификации или открытия снимка или копирования управляющего файла
  • ORA-00235: Управляющий файл заблокирован для паралельного изменения
  • ORA-00236: Снимок отменен, выбран резервный управляющий файл
  • ORA-00237: Операция создания снимка запрещена. Создан новый управляющий файл
  • ORA-00238: Операция пытается использовать имя файла как и имя базы данных
  • ORA-00250: Архиватор не запущен
  • ORA-00251: LOG_ARCHIVE_DUPLEX_DEST не может быть той же самой директорией что и %1:
  • ORA-00252: Журнал пуст. Архивирование невозможно
  • ORA-00253: Длина указанной строки превышает предел
  • ORA-00254: Ошибка в управляющей строке архива
  • ORA-00255: Ошибка во время архивации log-файла
  • ORA-00256: Произошла ошибка при разборе архивной строки
  • ORA-00257: Ошибка архиватора. Не могу подсоеденится пока занят ресурс
  • ORA-00258: При ручном архивировании в режиме NOARCHIVELOG log должен быть указн
  • ORA-00259: Журнал открытого экземпляра является текущим журнало и не может быть заархивирован
  • ORA-00260: Не могу найти активный журнал очереди [значение] для потока [значение]
  • ORA-00261: Журнал был изменен или архивирован
  • ORA-00262: Текущий журнал [значение] занят другим потоком [значение], невозможно переклюится
  • ORA-00263: Нет журналов для архивирования для потока [значение]
  • ORA-00264: Восстаовления не требуется
  • ORA-00265: Требуется восстановление экземпляра, новозможно утсановить режим ARCHIVELOG
  • ORA-00266: Требуется имя архивного журнала
  • ORA-00267: Имя архивного журнала не требуется
  • ORA-00268: Указанный журнальный файл не существует
  • ORA-00269: Указанный журнальный файл — часть потока [значение] не [значение]
  • ORA-00270: Ошибка создания архивного журнала [значение]
  • ORA-00271: Нет журналов требующих архивации
  • ORA-00272: Ошибка записи в архивный журнал [значение]
  • ORA-00273: Восстановление данных загруженных напрямую без журнализации
  • ORA-00274: Указано неверное значение [значение] параметра восстановления
  • ORA-00275: Процедура восстановления уже запущена
  • ORA-00276: Ключевое слово CHANGE указано, но не указан номер изменения
  • ORA-00277: Недопустимая опция восстановления UNTIL флаг [значение]
  • ORA-00278: Журнальный файл [значение] больше не требуется для восстановления
  • ORA-00279: Требуется имя журнального файла
  • ORA-00280: Требуется имя потока и последовательности
  • ORA-00281: Восстановление не может быть выполнено с использованием диспетчера
  • ORA-00282: UPI вызов не поддерживается, используйте ALTER DATABASE RECOVER
  • ORA-00283: Сеанс восстановления отменен из за ошибок
  • ORA-00284: Сеанс восстановления в процессе
  • ORA-00285: Значение TIME задано неверно
  • ORA-00286: Нет доступных файлов или файлов с корректными данными
  • ORA-00287: Указанный номер изменения [значение] не найден в потоке [значение]
  • ORA-00288: Для продолжения восстановления используйте ALTER DATABASE RECOVER CONTINUE
  • ORA-00289: Переменная [значение]
  • ORA-00290: Ошибка операционной системы. См сообщение об ошибке ниже
  • ORA-00291: Для PARALLEL требуется числовое значение
  • ORA-00292: Компонет «паралельное восстановление» не установлен
  • ORA-00293: Управляющий файл не синхронизирован с журналом повторного выполнения
  • ORA-00294: Указан неверный формат для архивного журнала [значение]
  • ORA-00295: Неверный номер файла данных/временных данных [значение], должно быть от 1: до [значение]
  • ORA-00296: Превышено значение RECOVER DATAFILE LIST
  • ORA-00297: Требуется указать RECOVER DATAFILE LIST перед RECOVER DATAFILE START
  • ORA-00298: Пропущенное или неверное значение аттрибута
  • ORA-00299: Восстановление на файловом уровне файла данных %1

Ошибки I/O-управления базой данных ORA-00300 — ORA-00399

Ошибки управления входом в БД Оракл и выходом из неё:

  • ORA-00300: Недопустимый размер блока журнала повторного выполнения, указанный размер [значение] превышает предел размер [значение]
  • ORA-00301: Ошибка в добавлении файла протокола [значение] — файл не может быть создан
  • ORA-00302: Превышен лимит количества журнальных файлов
  • ORA-00303: невозможно выполнить Parallel Redo
  • ORA-00304: Запрашиваемый INSTANCE_NUMBER занят
  • ORA-00305: Журнал [значение] потока [значение] не согласован и принадлежит другой базе данных
  • ORA-00306: Достигнут предел количества экземпляров [значение]
  • ORA-00307: Запрошенный INSTANCE_NUMBER выходит за допустимые пределы, максимум [значение]
  • ORA-00308: Невозможно открыть архивный журнал [значение]
  • ORA-00309: Журнал принадлежит другой базе данных
  • ORA-00310: Архивный журнал содержит последовательность [значение]; требуется последовательность [значение]
  • ORA-00311: Невозможно прочитать заголовок архивного журнала
  • ORA-00312: Доступный журнал [значение] поток [значение]
  • ORA-00313: Ошибка при открытии файла журнальной группы [значение] поток [значение]
  • ORA-00314: Журнал [значение], ожидаемая последовательность [значение] не совпадает с [значение]
  • ORA-00315: Журнал [значение] поток [значение], неверное значение [значение] в заголовке
  • ORA-00316: Журнал [значение], значение [значение] в заголовке указывает что это не журнальный файл
  • ORA-00317: Указанный файл [значение] не является журнальным файлом
  • ORA-00318: Журнал [значение] превысил допустимый размер [значение] не совпадает с [значение]
  • ORA-00319: Журнал [значение] имеет некорректный статус сброса
  • ORA-00320: Невозможно прочитать заголовок файла [значение] потока [значение]
  • ORA-00321: Невозможно обновить данные в заголовке журнального файла [значение] поток [значение]
  • ORA-00322: Журнал [значение] потока [значение] не текуща копия
  • ORA-00323: Текущий журнал потока [значение] не пригоден к использованию и все другие требуют архивации
  • ORA-00324: Имя журнального файла [значение] переведенное [значение] слишком длинное, превышен допустимый предел [значение]
  • ORA-00325: Архивный журнал потока [значение] содержит неверное значение [значение] в заголовке
  • ORA-00326: Журнал начинается на [значение], требуется ранее измененное [значение]
  • ORA-00327: Журнал [значение] потока [значение] имеет физический размер [значение] меньшее чем требуется [значение]
  • ORA-00328: Архивный журнал заканчивается на [значение], требуется более позднее изменение [значение]
  • ORA-00329: Архивный журнал начинается на [значение], требуется изменение [значение]
  • ORA-00330: Архивный журнал заканчивается на [значение], требуется изменение [значение]
  • ORA-00331: Версия журнала [значение] не совместима с версией ORACLE [значение]
  • ORA-00332: Архивный журнал очень маленький, возможно неполностью заархивирован
  • ORA-00333: Журнал повторного выполения прочитал [значение] ошибочных блоков из доступных [значение]
  • ORA-00334: Архивный журнал [значение]
  • ORA-00335: Доступный журнал [значение]: Нет журнала с таким номером, журнал не существует
  • ORA-00336: Размер блока файла журнала меньше чем минимальный блок [значение]
  • ORA-00337: Журнальный файл [значение] не существует и размер не указан
  • ORA-00338: Журнал [значение] больше чем последнее значение управляющего файла
  • ORA-00339: Архивный журнал не содержит каких либо повторных исполнений
  • ORA-00340: I/O ошибка при обработке журнала [значение] потока [значение]
  • ORA-00341: Журнальный файл [значение] имеет неверный номер [значение] в заголовке
  • ORA-00342: Архивный журнал не содержит информации SCN [значение]
  • ORA-00343: Слишком много ошибок, журнал закрыт
  • ORA-00344: Невозможно пересздать доступный журнал [значение]
  • ORA-00345: Ошибка записи в журнал повторного исполнения, блок [значение] всего [значение]
  • ORA-00346: Журнал отмечен как устаревший (STALE)
  • ORA-00347: Журнал [значение] потока [значение] имеет размер блока [значение], не совпадает, должно быть [значение]
  • ORA-00348: Неудачная обработка повторного восстановления, экземпляр должен быть остановлен
  • ORA-00349: Отказ в получении размера блока для [значение]
  • ORA-00350: Журнал [значение] (поток [значение])экземпляра [значение] требует архивирования
  • ORA-00351: Неправильное время для восстановления
  • ORA-00352: Все журналы из потока [значение] должны быть архивированы — нельзя разрешить
  • ORA-00353: Поврежден журнал блок [значение] изменение [значение] время [значение]
  • ORA-00354: Поврежден заголовок блока журнала повторного выполнения
  • ORA-00355: Номер изменения за пределами последовательности
  • ORA-00356: Неверная длина описания изменения
  • ORA-00357: Слишком много членов указано для журнального файла, максимум [значение]
  • ORA-00358: Слишком много членов указано, максимум [значение]
  • ORA-00359: Группа журнальных файлов [значение] не существует
  • ORA-00360: Не член журнального файла: [значение]
  • ORA-00361: Невозможно удалить последний журнал [значение] из группы [значение]
  • ORA-00362: Требуемый член является верным журнальным файлом в группе [значение]
  • ORA-00363: Журнал не архивированный
  • ORA-00364: Невозможно писать в заголовок нового журнала
  • ORA-00365: Указанный журнал не корректный
  • ORA-00366: Журнал [значение] потока [значение], ошибка контрольной суммы в заголовке файла
  • ORA-00367: Ошибка контрольной суммы в заголовке файла
  • ORA-00368: Ошибка контрольной суммы в блоке журнала повторного выполнения
  • ORA-00369: Текущий журнал потока [значение] испорчен и другой журнал очищен
  • ORA-00371: Недостаточно памяти в разделяемом пуле, должно быть не меньше [значение]
  • ORA-00372: Файл [значение] не может быть изменен в настоящее время
  • ORA-00373: Версия открытого журнала [значение] несовместима с версией ORACLE [значение]
  • ORA-00374: Значение параметра db_block_size=[значение] некорректно; должен быть составной в диапазоне [значение..значение]
  • ORA-00375: Невозможно получить значение по-умолчанию db_block_size
  • ORA-00376: Файл [значение] не может быть прочитан в настоящее время
  • ORA-00377: Частое резервное копирование файла [значение] причина тупика в операциях записи
  • ORA-00378: Буферный кэш не может быть создан как указано
  • ORA-00379: Нет свободных буферов в буферном кэше [значение] для блока [значение]K
  • ORA-00380: Не могу указать db_[значение]k_cache_size [значение]K это стандартный размер блока.
  • ORA-00381: Невозможно использовать старый и новый параметры для указания размера буферного кэша
  • ORA-00382: %s неверный размер блока, верное значение [значение..значение]
  • ORA-00383: Значение по умолчанию для кэша не может быть уменьшено до нуля
  • ORA-00384: Недостаточно памяти для увеличения кэша
  • ORA-00390: Журнал [значение] потока [значение] очищен и не может быть текущим журналом
  • ORA-00391: Все потоки с этого момента должны переключится на новый формат журнала
  • ORA-00392: Журнал [значение] потока [значение] был очищен, операция не разрешена
  • ORA-00393: Журнал [значение] потока [значение] необходим для восстановления недоступной (offline) базы данных.
  • ORA-00394: Доступный журнал заново используется во время его архивирования
  • ORA-00395: Журнал для клона базы данных должен быть переименован
  • ORA-00396: Ошибка [значение] требует отката на однопроходное восстановление
  • ORA-00397: Восстановление экземпляра прервано с ошибкой
  • ORA-00398: Восстановление прервано до правильной переконфигурации
  • ORA-00399: Поврежденное описание изменений в журнале повторного исполнения

Ошибки инициализации базы данных ORA-00400 — ORA-00499

  • ORA-00400: Неверное значение [значение] для параметра [значение]
  • ORA-00401: Значение для параметра [значение] не поддерживается этой версией
  • ORA-00402: Изменения базы данных версии [значение] не могут быть использованы версией [значение]
  • ORA-00403: [значение] не тоже самое как в других экземплярах [значение]
  • ORA-00404: Преобразованный файл не найден: [значение]
  • ORA-00405: Тип совместимости [значение]
  • ORA-00406: Параметр COMPATIBLE требует значение [значение] или выше
  • ORA-00407: Откат обновления с версии [значение].[значение] до версии [значение].[значение] неразрешено
  • ORA-00408: Значение параметра [значение] выставлено в TRUE
  • ORA-00436: Oracle не лицензирован. Обратитесь в корпорацию Oracle для помощи
  • ORA-00437: Дополнительные возможности Oracle не лицнзированны. Обратитесь в корпорацию Oracle для помощи
  • ORA-00438: Опция [значение] не установлена
  • ORA-00439: Дополнительная возможность не разрешена: [значение]
  • ORA-00443: Фоновый процесс [значение] не запущен
  • ORA-00444: Фоновый процесс [значение] вышел из строя при запуске
  • ORA-00445: Фоновый процесс [значение] не стартовал по истечение [значение] секунд
  • ORA-00446: Фоновый процесс стартовал, когда этого не ожидали
  • ORA-00447: Критическая ошибка в фоновом процессе
  • ORA-00448: Нормальное завершение фонового процесса
  • ORA-00449: Фоновый процесс [значение] внезапно прервал работу с ошибкой [значение]
  • ORA-00470: LGWR процесс завершился с ошибкой
  • ORA-00471: DBWR процесс завершился с ошибкой
  • ORA-00472: PMON процесс завершился с ошибкой
  • ORA-00473: ARCH процесс завершился с ошибкой
  • ORA-00474: SMON процесс завершился с ошибкой
  • ORA-00475: TRWR процесс завершился с ошибкой
  • ORA-00476: RECO процесс завершился с ошибкой
  • ORA-00477: SNP* процесс завершился с ошибкой
  • ORA-00478: SMON процесс завершился с ошибкой [значение]
  • ORA-00480: LCK* процесс завершился с ошибкой
  • ORA-00481: LMON процесс завершился с ошибкой
  • ORA-00482: LMD* процесс завершился с ошибкой
  • ORA-00483: Во время остановки процесс завершился ненормально
  • ORA-00484: LMS* процесс завершился с ошибкой
  • ORA-00485: DIAG процесс завершился с ошибкой [значение]

Сообщения об ошибках ORA-00500 — ORA-00599

  • ORA-00568: Максимальное количество прерываний обработчика превышено

Ошибки аварийного восстановления ORA-00600 — ORA-00699

  • ORA-00600: Код внутренней ошибки,
    аргументы [значение], [значение], [значение], [значение], [значение], [значение], [значение], [значение]
  • ORA-00601: Конфликт чистых блокировок
  • ORA-00602: Внутренее программное исключение
  • ORA-00603: Сеанс сервера Oracle был прерван критичной ошибкой
  • ORA-00604: Ошибка случилась на рекурсивном уровне SQL [значение]
  • ORA-00606: Внутренний код ошибки
  • ORA-00607: Внутреняя ошибка при изменении блока данных

Словарные ошибки ORA-00700 — ORA-00799

  • ORA-00701: Объект необходимый для старта базы данных не может быть изменен
  • ORA-00702: Загрузчик версии [значение] несовместим с версией [значение]
  • ORA-00703: Максимальное количество блокировок кэша строк экземпляра превышено
  • ORA-00704: Процесс загрузки завершился аварийно
  • ORA-00705: Неверное состояние во время запуска; остановите экземпляр и заново запустите
  • ORA-00706: Ошибка смены формата файла [значение]

Общие ошибки ORACLE ORA-00800 — ORA-00899

  • ORA-0800: buffer write process is not active (процесс записи в буфер не активен).

    Причина: Проблема связана с попыткой запуска
    ORACLE, что вызвало снятие процесса записи в буфер.
    Обычно это сообщение выдается вместе с сообщением
    о системной ошибке, обьясняющей причину сбоя.

    Действие: Используйте сообщение о системной ошибке
    ( если такое есть ) для выяснения причины ошибки.
    Если системная ошибка отсутствует, обратитесь к
    руководству по инстолляции ORACLE за перечнем требо-
    ваний. Убедитесь, что все логические имена ORACLE
    присвоены верно, что достаточно свободного дискового
    пространства в директории ORACLE, и что достаточное
    число глобальных секций и страниц. Также убедитесь в
    наличии у бюджета ORACLE трубуемого приоритета. Если
    источник проблемы не определен, обратитесь к соответ-
    ствущему установочному обеспечению.
  • ORA-0801: after image write process is not active (процесс записи последущего вида не активен).

    Причина: Это свойство не поддерживается.

    Действие: Обратитесь к соответствующему установочному обеспечению.
  • ORA-0802: invalid context area (недопустимая контекстная область).

    Причина:Это сообщение о внутренней ошибке, которая не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.
  • ORA-0805: opiodr: inconsistent recursion level number (несовместимый уровень рекурсии).

    Причина:Это сообщение о внутренней ошибке, которая не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.
  • ORA-0806: before image process is not active (процедура предварительного вида не активна).

    Причина: Проблема связана с попыткой запуска
    ORACLE, что вызвало снятие процесса предварительного
    вида.Обычно это сообщение выдается вместе с сообще-
    нием о системной ошибке, обьясняющей причину сбоя.

    Действие: Используйте сообщение о системной ошибке
    (если такое есть) для выяснения причины ошибки.
    Если системная ошибка отсутствует, обратитесь к
    руководству по инстолляции ORACLE для вашей опера-
    ционной системы,чтобы проверить правильность инстол-
    ляции. Если источник проблемы не определен, обрати-
    тесь к соответствущему установочному обеспечению.
  • ORA-0807: clean up process is not active (процедура очистки не активна).

    Причина: Проблема связана с попыткой запуска
    ORACLE, что вызвало снятие процесса предварительного
    вида.Обычно это сообщение выдается вместе с сообще-
    нием о системной ошибке, обьясняющей причину сбоя.

    Действие: Используйте сообщение о системной ошибке
    ( если такое есть ) для выяснения причины ошибки.
    Если системная ошибка отсутствует, обратитесь к
    руководству по инстолляции ORACLE для вашей опера-
    ционной системы,чтобы проверить правильность инстол-
    ляции. Если источник проблемы не определен, обрати-
    тесь к соответствущему установочному обеспечению.
  • ORA-0809: opispf: invalid special function code (неверный спецкод функции).

    Причина:Это сообщение о внутренней ошибке, которая не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.
  • ORA-0810: opiomc: context area not remapped at original addres (контекстная область не соответствует начальному адресу).

    Причина:Это сообщение о внутренней ошибке, которая не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.
  • ORA-0811: readahead process is not active (процедура чтения вперед не активна).

    Причина: Проблема связана с попыткой запуска
    ORACLE, что вызвало снятие процесса чтения вперед.
    Обычно это сообщение выдается вместе с сообщением
    о системной ошибке, обьясняющей причину сбоя.

    Действие: Используйте сообщение о системной ошибке
    ( если такое есть ) для выяснения причины ошибки.
    Если системная ошибка отсутствует, обратитесь к
    руководству по инстолляции ORACLE для вашей опера-
    ционной системы,чтобы проверить правильность инстол-
    ляции. Если источник проблемы не определен, обрати-
    тесь к соответствущему установочному обеспечению.
  • ORA-0813: assertion failure (добавление снято).

    Причина:Это сообщение о внутренней ошибке, относящейся к ORACLE SORT.
    Это не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.
  • ORA-0814: ltbdrv: illegal lock mode (недопустимый режим защиты).

    Причина:Это сообщение о внутренней ошибке, которая не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.
  • ORA-00816: error message translation failed
    (не достает перевода сообщения об ошибке / сбой трансляции сообщения об ошибке).

    Причина:Это сообщение о внутренней ошибке, которая не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.
  • ORA-0817: prsgkw: internal error token not found (индентификатор внутренней ошибки не обнаружен).

    Причина:Это сообщение о внутренней ошибке, которая не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.
  • ORA-0818: opispf: osf too big (osf слишком велик).

    Причина:Это сообщение о внутренней ошибке, которая не может произойти при нормальной работе.

    Действие: Обратитесь к соответствуюшему наладочному обеспечению с подробным описанием проблемы.

Синтаксические ошибки ORA-00900 — ORA-00999

  • ORA-00900: Неверное SQL предложение.

    Причина: Введенный вами оператор не опознан как допустимая команда SQL.

    Действие:
    Проверьте опечатки,убедитесь, что ключевые слова команд SQL начинаются одним из следущих слов:
    ALTER, AUDIT, CREATE, DELETE, DROP, GRANT, INSERT, NOAUDIT, RENAME, REVOKE, SELECT, UPDATE, LOCK, VALIDATE.
    Другие команды вызовут эту ошибку.

    Комментприй из практики:
    Однажды ошибка затаилась хитро — самым первым байтом стоял плюсик перед «create or replace function …».
    Но чаще первым байтом может быть «s», который ставится при сохранении (Ctrl-S), когда Ctrl слабо нажимаешь.
  • ORA-00901: Неверный синтаксис команды CREATE / Неверная команда на создание.

    Причина: В команде CREATE использована недопустимая опция CREATE.

    Действие: Проверьте опечатки, убедитесь,что за командой CREATE следует одна из следущих опций :
    [UNIQUE] INDEX, PARTITION, SPACE DEFINITION, [PUBLIC] SYNONYM, TABLE или VIEW.
  • ORA-00902: Неверный тип данных.

    Причина: Введенный тип данных в операторе CREATE или ALTER TABLE не является допустимым.

    Действие:
    Проверьте опечатки, убедитесь, что за каждым именем колонки следует один из следущих типов данных:
    DATA, CHAR, NUMBER, RAW, LONG или LONG RAW.
  • ORA-00903: Неверное имя таблицы.

    Причина:
    Введенные имена таблицы или группы не существуют или недопустимые.
    Это сообщение так же появляется в сучае, если неверное или несуществующее имя группы
    описано в команде ALTER/DROP CLUSTER.

    Действие:
    Проверьте опечатки. Допустимое имя группы должно начинаться с буквы
    и содержать только буквы,цифры и спецсимволы: $,# и _.
    Имя должно быть не длиннее 30 символов и не являться зарезервированным словом.
  • ORA-00904: Неверное имя колонки.

    Причина: Введенное имя колонки отсутствует или недопустимо.

    Действие: Введите верное имя колонки.
    Допустимое имя должно начинаться с буквы и содержать только буквы,цифры и спецсимволы: $,# и _.
    Имя должно быть не длиннее 30: символов и не являться зарезервированным словом.
    Если оно содержит другие символы, оно долно быть в двойных кавычках.
  • ORA-00905: Пропущено ключевое слово.

    Причина: Требуемое ключевое слово пропущено.

    Действие: Проверьте синтаксис команды и добавьте пропущенные ключевые слова.
  • ORA-00906: Пропущена левая скобка.

    Причина: Требуемая левая скобка пропущена. Основные
    команды (такие как CREATE TABLE,CREATE CLUSTER и
    INSERT) требуют список пунктов, заключенный в скобки.
    Скобки также необходимы вокруг последовательностей в
    предложении WHERE и в UPDATE таблица SET колонка = (SELECT …).

    Действие: Проверьте синтаксис команды и вставь-
    те пропущенные скобки.
  • ORA-00907: missing right parenthesis
    пропущена правая скобка

    Причина: Левая скобка введена бз закрывающей правой
    или предыдущая информация была заключена в скобки.
    Все скобки должны быть парными.

    Действие: Вставьте закрывающую правую скобку.
  • ORA-00908: missing NULL keyword
    пропущено ключевое слово NULL

    Причина: В командах СREATE или ALTER TABLE, NOT
    было введенодля указания, что никакие нулевые величи-
    ны не допустимы в этой колонке,но ключевое слово
    NULL было пропущено.

    Действие: Если требуете наличие значения в этой
    колонке, замените ключевое слово NOT на NOT NULL.
  • ORA-00909: invalid number of arguments
    недопустимое число аргументов

    Причина: Указание на встроенную функцию ORACLE
    было сделано с неверным числом аргументов.Все фун-
    кции ORACLE, за исключением SYSDATE требуют по
    крайней мере один аргумент.

    Действие: Проверьте синтаксис команды и введите
    введите необходимое число аргументов .

  • ORA-00910: specified length too large for CHAR colum
    указанная длина слишком велика для колонки CHAR

    Причина: Размер поля знака не указан или указан
    неверно. Необходимо указывать максимальную длину
    для каждой колонки знаков.Это длина может принимать
    значения от 0: до 240: .

    Действие: Введите максимальную длину из диапазона
    от 0 до 240: .
  • ORA-00911: invalid character
    неверный знак

    Причина: Спецзнак неверен или допустим только в
    определенных местах. Если спецзнак( кроме $, # и _ )
    используется в имени и имя не заключено в двойные
    кавычки («), появится данное сообщение.

    Действие: Удалите неверный знак из команды.

  • ORA-00912: operand pop оperation with no operands on stack
    для операции с операндом рор отсутствуют операнды в стеке

    Причина: Это сообщение о внутренней ошибке,
    которая не может произойти при нормальной работе .

    Действие: Обратитесь к соответствуюшему наладочному
    обеспечению с подробным описанием проблемы.

  • ORA-00913: too many values
    слишком много значений

    Причина: Команда предполагает два одинаковых
    набора значений, но во втором наборе пунктов больше,
    чем в первом. Например: подзапрос в предложении
    WHERE или HAVING может быть слишком много колонок,
    или в предложениях VALUES или SELECT колонок больше,
    чем в INSERT.

    Действие: Проверьте число пунктов и измените их.

  • ORA-00914: missing ADD keyword
    пропущено ключевое слово ADD

    Причина: Команда ALTER PARTITION введна без
    ключевого слова ADD.

    Действие: проверьте синтаксис команды и повторите
    ее.

  • ORA-00915: network access of dictionary table not currently allowed
    неверно установлен сетевой доступ к словарной таблице

    Причина:Это сообщение о внутренней ошибке,
    которая не может произойти при нормальной работе .

    Действие: Обратитесь к соответствуюшему наладочному
    обеспечению с подробным описанием проблемы.

  • ORA-00917: missing comma
    пропущена запятая

    Причина: Пропущена запятая в списке колонок,или
    в списке значений в операторе INSERT, или в списке
    формы ((c,d),(e < f),…).

    Действие: Проверьте сиснтаксис в вашем SQL оператор
    и, если необходимо, добавьте пропущенную запятую.

  • ORA-00918: column ambigiuously defined
    неоднозначное определение колонки

    Причина: Колонка, использованая для присоединения
    существует в более, чем одной таблице. При присоеди-
    нении любая колонка, присутствующая более чем в одной
    таблице, должна содержать имя таблицы. Имя колонки
    должно указываться следущим образом: TABLE.COLUM
    или TABLE_ALIAS.COLUMN, EMP.DEPTNO или E.DEPTNO, а
    не просто EMP.

    Действие: Введите имя таблицы в имя колонки перед
    точкой или альтернативное имя таблицы, как показано
    выше.

  • ORA-00919: invalid functio
    неверная функция

    Причина: Ввод, похожий на функцию, типа
    функция(аргумент), не опознан как функция ORACLE.

    Действие: Обратитесь к руководству за списком
    допустимых имен функций.

  • ORA-00920: invalid relational operator
    неверный оператор отношения

    Причина: Задача поиска с неверным или пропущенным
    оператором условия.

    Действие: Введите допустимый условный оператор.
    Допустимы следущие орераторы отношения:=, !=, <>, >,
    >=, <, <=,IN, IS[NOT], NULL, LIKE, и BETWEEN.

  • ORA-00921: unexpected end of SQL command
    неожиданный конец команды SQL

    Причина: Команда SQL не полная. Была введена часть
    верной команды, но по крайней мере одина главная ком-
    понента пропущена.

    Действие: Проверьте синтаксис команды и вставьте
    пропущенные компоненты.

  • ORA-00922: invalid optio
    неверная опция

    Причина: Неверная опция была описана в определении
    колонки или в определении области.

    Действие: Удалите неверную опцию из определения
    колонки или области. Допустимой опцией, описывающей
    колонку, является NOT NULL для указания, что колонка
    не может содержать NULL значения. Все прочее,следущее
    за типом данных, кроме запятой или закрывающей скобки,
    классифицируется как недопустимая опция. Описывая
    длину для DATA или тип данных LONG, вы получите данное
    сообщение об ошибке. В описании определения области
    допустимы только следущие опции: INITIAL, INCREMENT и
    MAXEXTENTS,( для DATAPAGES и INDEXPAGES) и PCTFREE
    ( только для DATAPAGES ).

  • ORA-00923: missing FROM keyword
    пропущено ключевое слово FROM

    Причина: В командах SELECT или REVOKE ключевое слово
    FROM или пропущено, или неверно помещено, или с опе-
    чаткой. Ключевое слово FROM должно следовать в команде
    SELECT за выбранным пунктом, или за быбранным именем
    таблицы в команде REVOKE.

    Действие: Вставьте на место слово FFROM. Выбранный
    список может быть сам по себе ошибочным. Убедитесь,
    что использованы одинарные кавычки для выделения
    альтернативного имени, и является или нет альтерна-
    тивное имя зарезервированным словом.

  • ORA-00924: missing BY keyword
    пропущено ключевое слово BY

    Причина: Пропущено ключевое слово BY в выражениях
    GROUP BY, ORDER BY, или CONNECTED BY. Кроме того в
    команде GRANT за словом INDENTIFIED должно следовать
    BY.

    Действие: Правильно вставьте слово BY.

  • ORA-00925: missing INTO keyword
    пропущено ключевое слово INTO

    Причина: Была употреблена команда INSERT без ключе-
    чевого слова INTO.

    Действие: Замените INSERT на INSERT INTO.

  • ORA-00926: missing VALUES keyword
    пропущено ключевое слово VALUES

    Причина: Оператор INSERT без ключевого слова
    VALUES или SELECT. За выражением INSERT INTO должно
    следовать выражение VALUES или SELECT последователь-
    ность.

    Действие: Введите после выражения INSERT INTO
    выражение VALUES или последовательность.

  • ORA-00927: missing equal sig
    пропущен знак равно

    Причина: Знак равно пропущен в одном из следущих
    мест: * в выражении SET команды UPDATE
    * после ! для указания на неравенство
    * в выражении PCTFREE команды CREATE INDEX

    Действие: Вставьте знак равенства.

  • ORA-00928: missing SELECT keyword
    пропущено ключевое слово SELECT

    Причина: В команду CREATE VIEW должна быть включена
    SELECT последовательность.

    Действие: Вставьте требуемое выражение SELECT в
    команду CREATE VIEW.

  • ORA-00929: missing period
    пропущен период

    Причина:Это сообщение о внутренней ошибке,
    которая не может произойти при нормальной работе .

    Действие: Обратитесь к соответствуюшему наладочному
    обеспечению с подробным описанием проблемы.

  • ORA-00930: missing asterisk
    пропущена звездочка *

    Причина:Это сообщение о внутренней ошибке,
    которая не может произойти при нормальной работе .

    Действие: Обратитесь к соответствуюшему наладочному
    обеспечению с подробным описанием проблемы.

  • ORA-00931: missing identifier
    порущен индентификатор

    Причина:Это сообщение о внутренней ошибке,
    которая не может произойти при нормальной работе .

    Действие: Обратитесь к соответствуюшему наладочному
    обеспечению с подробным описанием проблемы.

  • ORA-00932: inconsistent datatypes
    несовместимый тип данных

    Причина: Попытка добавить символьное поле к полю
    данных. Данные могут быть добавлены только к числовым
    полям.

    Действие: Преобразуйте символьное поле в числовое
    поле с помощью функции TO_NUMBER перед добавлением
    поля данных.

  • ORA-00933: SQL comand not properly ended
    команда SQL не закончена

    Причина: SQL-команда закончена неверным выражением.
    Например: выражение ORDER BY может быть включено в
    команду CREATE VIEW или INSERT.Однако ORDER BY не
    должна использоваться для создания очередного обзора
    или включаться в основной порядок.

    Действие: Проверьте синтаксис команды и удалите
    лишние компоненты. Вы должны уметь дублировать удален-
    ные выражения другими командами. Например, если вы
    желаете упорядочить строки обзора, действуйте так же,
    как при запросе на обзор, но не как при создании его.
    Эта ошибка также может произойти при применении
    SQL*Forms, если смещено продолжение строки. Проверьте
    смещения и удалите пробелы. Вы должны испоьзовать
    соответствующие окончания SQL, если используете I
    выражение с одним аргументом, например: IN(X). В вы-
    ражении IN должно испоьзоваться не менее двух аргу-
    ментов.

  • ORA-00934: set function not allowed here
    данная функция недопустима здесь

    Причина: одна из групповых функций ( таких как
    AVG, SUM, MAX, MIN, COUNT) была использована в вы-
    жении WHERE или GROUP BY.

    Действие: Удалите групповую функцию из выражений
    WHERE или GROUP BY.Вы можете получить желаемый резу-
    льтат,включив функцию в запрос или предложение HAVING.

  • ORA-00935: set function is nested too deep
    данная функция является слишком вложеной

    Причина:Это сообщение о внутренней ошибке,
    которая не может произойти при нормальной работе .

    Действие: Обратитесь к соответствуюшему наладочному
    обеспечению с подробным описанием проблемы.

  • ORA-00936: missing expressio
    пропущено выражение

    Причина: Необходимая часть выражения пропущена.
    Например, команда SELECT вводится без списка колонок,
    или с несовместимым выражением типа (SAL+). Это может
    произойти и в том случае, если пропущены зарезервиро-
    ванные слова типа SELECT TABLE.

    Действие: Проверьте синтаксис команды и введите
    пропущенные команды.

  • ORA-00937: not a single group set functio
    устанавливается не только групповая функция

    Причина: В запрос нельзя одновременно включать и
    групповую функцию ( AVG, SUM,COUNT,MIN или MAX) и
    собственное выражение для колонки, пока выражение для
    колонки не включено в выражение GROUP BY.

    Действие: Удалите из запроса или выражение для
    колонки, или групповую функцию, или добавьте выражение
    GROUP BY , в которое включите перечисление колонок.

  • ORA-00938: not enough arguments for functio
    недостаточно аргуметов для функции

    Причина: В функции описано слишком мало аргументов.

    Действие: Проверьте синтаксис функции и добавьте
    все необходимые аргументы.

  • ORA-00939: too many arguments for functio
    cлишком много аргументов в функции

    Причина: В функции описано слишком много аргументов.

    Действие: Проверьте синтаксис функции и опишите
    только необходимые аргументы.

  • ORA-00940: invalid ARTER comand
    неверная команда ALTER

    Причина: Описана неверная опция ALTER. Только
    разделы и таблицы могут быть неповторяющимися. Пра-
    вильная команда ALTER должна начинаться одним из сле-
    дущих вариантов : ALTER TABLE или ALTER PARTITION.

    Действие: Проверьте синтаксис рпавильного написания
    команды ALTER.

  • ORA-00941: missing cluster name
    пропущено имя группы

    Причина: Имя группы или пропущено или неверное.

    Действие: Опишите верное имя группы. Допустимое имя
    группы начинается с буквы, содержит не более 30: сим-
    волов и состоит только из букв, цифр и спецсимволов $,
    _ и #. Оно не должно быть зарезервированным словом.
    Имя должно быть напечатано сразу за ключевым словом
    CREATE CLUSTER.

  • ORA-00942: table or view does not exist
    таблица или обзор не существуют

    Причина: Данная таблица или обзор не существуют.
    или введено имя обзора вместо таблицы. Существующие
    пользовательские таблицы и обзоры можно просмотреть
    в обзоре TAB.

    Действие: Проверьте опечатки и не ввели ли вы имя
    обзор вместо таблицы. Введите существующие имена.

  • ORA-00943: cluster does not exist
    группа не существует

    Причина: Ресурс пользователя не включен в группу
    под описанным именем.

    Действие: Опишите верное имя группы сразу после
    ключевого слова CLUSTER.

  • ORA-00944: insufficient number of clustered columns
    недостаточное число сгруппированных колонок

    Причина: Была попытка создать таблицу с меньшим
    числом сгруппированных колонок, чем было описано
    в команде CREATE CLUSTER. Выражение CLUSTER команды
    CREATE TABLE должно описывать все сгруппированные
    колонки, определенные при создании группы. Используя
    имя группы можно просмотреть все групповые колонки в
    таблице словаря COL.

    Действие: Опишите все имена колонок в команде
    CREATE TABLE.

  • ORA-00945: specified clustered column does not exist
    описанная групповая колонка не существует

    Причина: Колонка, описанная в выражении оператора
    CREATE TABLE не является колонкой данной таблицы.

    Действие: Повторите, используя имя колонки таблицы.

  • ORA-00946: missing TO keyword
    пропущено ключевое слово TO

    Причина: Команда GRANT введена без ключевого слова
    TO или использована неверная форма этой команды.

    Действие: Проверьте синтаксис двух основных форм
    команды GRANT ( предоставление доступа к базе данных
    и предоставление привилегий). Вставьте ключевое слово
    TO правильно в команду GRANT.

  • ORA-00947: not enough values
    недостаточно значений

    Причина: Опертор SQL требует двух одинаковых наборов
    значений, а второй набор содержит меньшее число зна-
    чений. Это может произойти и в случае, если в выраже-
    ниях WHERE или HAVING вложенная SELECT находит меньшее
    число колонок, как в : WHERE(A,B) IN (SELECT C FROM..)
    Возможна ошибка и в операторе INSERT в котором выра-
    жения VALUES или SELECT не содержат достаточно для
    INSERT значений, как в:
    INSERT INTO таблица (A,B) VALUES(‘C’).

    Действие: Поверрьте численность каждого набора и
    сделайте их равными по числу.

  • ORA-00948: ALTER CLUSTER statement no longer supported
    опреатор ALTER CLUSTER более не поддерживается

    Причина: Оператор ALTER CLUSTER удален

    Действие: Для добавления данных из таблицы исполь-
    зуйте следущий набор операторов SQL: CREATE TABLE
    <новая_таблица> SELECT*FROM <старая_таблица> CLUSTER
    <имя_группы> DROP <старая_таблица> и
    RENAME TABLE <новая_таблица> <старая_таблица>.

  • ORA-00949: illegal reference to external database
    неверная сноска на внешнюю базу данных

    Причина:Это сообщение о внутренней ошибке,
    которая не может произойти при нормальной работе .

    Действие: Обратитесь к соответствуюшему наладочному
    обеспечению с подробным описанием проблемы.

  • ORA-00950: invalid drop optio
    неверная опция DROP

    Причина: После команды DROP не было опции DROP
    такой, как TABLE, VIEW, SYNONYM, CLUSTER, или SPACE.

    Действие: Проверьте синтаксис команды и используй-
    те верный формат опции DROP.

  • ORA-00951: cluster not empty
    группа не является пустой

    Причина: Команда DROP описывает не пустую группу.
    Группа может быть удалена только в том случае, если
    она не содержит таблиц. Удалить таблицу из группы
    с помощью команды DROP TABLE.

    Действие: Удалите из группы все таблицы и после
    этого используйте команду DROP CLUSTER.

  • ORA-00952: missing GROUP keyword
    пропущено ключевое слово GROUP

    Причина: Группа неверно реализована.

    Действие: От пользователя не требуется ни каких
    действий.

  • ORA-00953: missing index name

    пропущено имя индекса

    Причина: В командах CREATE, DROP, VALIDATE INDEX
    имя индекса неверное или отсутствует.

    Действие: Напечатайте верное имя индекса после
    ключевого слова INDEX. Если вы желаете удалить или
    исправить индекс, проверьте имя, просмотрев обзор
    INDEXES. Если необходимо создать новый индекс, про-
    верьте сначала синтаксис.

  • ORA-00954: missing INDENTIFIED keyword

    пропущено ключевое слово INDENTIFIED

    Причина: Команда GRANT CONNECTION была введена без
    ключевого слова INDENTIFIED.

    Действие: Вставьте ключевое слово INDENTIFIED после
    имени пользователя. Формат команды следущий:GRANT
    CONNECTION TO <список пользователей> INDETIFIED BY
    <пароль списка>.

  • ORA-00955: name is already used by existing object

    имя используется существующим объектом

    Причина: Была попытка создать таблицу, обзор,
    группу или синоним, которые уже есть. Каждое имя поль-
    зовательской таблицы долно быть отличным от других
    имен таблиц, обзоров, групп или синонимов, принадле-
    жащих другим пользователям.

    Действие: Или введите уникальное имя таблицы, об-
    зора,группы или синонима, или измените или удалите
    существующее.

  • ORA-00956: invalid auditing optio

    неверная опция контроля

    Причина: Была неверная опция проверки.

    Действие: Проверьте синтаксис команды и повторирте
    попытку с верной опцией.

  • ORA-00957: duplicate column name

    дублирование имени колонки

    Причина: Имя колонки было описано дважды в команде
    CREATE или INSERT. Имя колонки в таблице, обзоре или
    в группе должно быть уникальным.

    Действие: Замените в команде CREATE имя колонки
    на новое уникальное. В команде INSERT удалите дубли-
    рущее имена.

  • ORA-00958: missing CHECK keyword

    пропущено ключевое слово CHECK

    Причина: Отсутствует CHECK сразу после ключевого
    слова WHITH в выражении WITH CHECK OPTION оператора
    CREATE VIEW.

    Действие: Проверьте синтаксис оператора SQL.

  • ORA-00959: space definition name does not exist

    имя области не существует

    Причина: В команде A DROP SPACE описано несущест-
    вующее имя области.

    Действие: Используйте существующие имена определе-
    ния области. Для просмотра существующих имен выберите
    SNAME из SPACES.

  • ORA-00960: invalid INITIAL value

    неверное значение INITIAL

    Причина: Было описано неверное значение номера
    начальной datapage или indexpage в команде CREATE
    SPACE. Это значение должно быть не менее 3.

    Действие: Введите значение INITIAL не меньшее 3.

  • ORA-00961: invalid INCREMENT value

    неверное значение INCREMENT

    Причина: Было описано неверное значение числа
    шагов для datapage или indexpage. Значение шага
    должно быть более 3.

    Действие: Введите значение INCREMENT болшее 3.

  • ORA-00962: invalid PCTFREE value

    неверное значение PCTFREE

    Причина: Неверное значение процента свободного
    места было описано в определении SPACE. Это значение
    долно находиться в диапазоне от 1: до 99.

    Действие: Введите значение PCTFREE в интервале
    от 1: до 99.

  • ORA-00963: invalid SIZE value

    неверное значение SIZE

    Причина: Было описано неверное значение размера
    логического блока в команде CREATE CLUSTER. Размер
    логического блока используется для эффективного хра-
    нения малых групп данных.

    Действие: Опишите допустимое значение размера логи-
    ческого блока ( более 0).

  • ORA-00964: invalid space defenition name

    неверное имя определения области

    Причина: Было описано неверное имя области в коман-
    де CREATE/DROP SPACE или в CREATE TABLE, или в команде
    CREATE TABLE описано несуществующее имя области.

    Действие: Введите верное имя области. Допустимое
    имя начинается с буквы, содержит не более 30: сим-
    волов и состоит только из букв, цифр и спецсимволов $,
    _ и #. Оно не должно быть зарезервированным словом.
    Если ваше имя верное, возможно вы нечаянно удалили
    определение области TEMP.

  • ORA-00965: space definition name already exists

    имя определения области уже существует

    Причина: В команде CREATE SPACE было использовано
    существующее имя области. Имена определений областей
    должны быть уникальными.

    Действие: Введите уникальное имя области.

  • ORA-00966: missing TABLE keyword

    пропущено ключевое слово TABLE

    Причина: Была использована команда LOCK и при этом
    ключевое слово TABLE было с опечаткой, или пропущено,
    или неверно расположено. Команда LOCK должна начи-
    наться так: LOCK TABLE <имя таблицы> … .

    Действие: Вставьте ключевое слово TABLE в соот-
    ветствущее место.

  • ORA-00968: missing INDEX keyword

    пропущено ключевое слово INDEX

    Причина: Была использована команда CREATE UNIQUE
    и при этом ключевое слово INDEX было с опечаткой,
    или пропущено, или неверно расположено .

    Действие: Проверьте синтаксис и повторите попытку.

  • ORA-00969: missing ON keyword

    пропущено ключевое слово O

    Причина: Была использована команда GRANT или CREATE
    INDEX и при этом ключевое слово ON было с опечаткой,
    или пропущено, или неверно расположено.

    Действие: Вставьте ключевое слово ON в соот-
    ветствущее место.

  • ORA-00970: missing WITH keyword

    пропущено ключевое слово WITH

    Причина: Ключевое слово START было использовано без
    WITH. Оба ключевых слова необходимы в выражении
    START WITH для запроса.

    Действие: Замените слово START на START WITH.

  • ORA-00971: missing SET keyword

    пропущено ключевое слово SET

    Причина: В команде UPDATE ключевое слово SET
    было с опечаткой, или пропущено, или неверно распо-
    ложено.

    Действие: Вставьте ключевое слово SET после имени
    изменяемой таблицы.

  • ORA-00972: indentifier is too big

    индентификатор слишком большой

    Причина: Размер имени объекта базы данных более
    30: символов.(Объектами базы данных являются таблицы,
    группы, обзоры, индексы, синонимы, области и имена
    пользователей.

    Действие: Укоротите имя до максимум 30: символов.

  • ORA-00973: invalid row count estimate

    неверная оценка счета строк

    Причина: Величина счета строк, описанная в команде
    CREATE INDEX является числом, меньшим 0.

    Действие: Опишите верное значение (большее чем 0).

  • ORA-00974: invalid index block loading factor ( percentage )

    неверный фактор загрузки блока индексов (процент)

    Причина: Процент назанятого объема, описанной в
    команде CREATE INDEX, области не принадлежит интерва-
    лу от 1: до 90%.

    Действие: Введите значение PCTFREE из диапазона от 1 до 90. По умолчанию — 10.

  • ORA-00975: Date + date not allowed

    неразрешается данные + данные

    Причина: Попытка сложить вместе два поля данных.
    Данные могут быть добавлены только к полям чисел, но
    не к другим данным.

    Действие: Добавьте поле данных к полю чисел.

  • ORA-00977: duplicate auditing optio

    двойная опция контроля

    Причина: Та же самая опция контроля была описана
    еще раз.

    Действие: Удалите лишнее описание контроля.

  • ORA-00978: nested set function with out GROUP BY

    вложенный групповая функция без GROUP BY

    Причина: Групповая функция (такая как MIN, MAX,
    или AVG) была использована внутри другой групповой
    функции (такой как MAX(COUNT(*))) без соответствую-
    щего выражения GROUP BY.

    Действие: Или добавьте выражение GROUP BY или
    удалите внешний уровень вложенности.

  • ORA-00979: not a GROUP BY expressio

    выражение не принадлежит к GROUP BY

    Причина: Предложение GROUP BY не содержит всех
    выражений предложения SELECT. Выражения из SELECT,
    не включенные в групповые функции (COUNT, SUM, AVG,
    MAX, MIN ) должны быть перечислены в предложении
    GROUP BY.

    Действие: Включите все выражения из SELECT, не
    являющиеся аргументами групповых функций в предложе-
    ние GROUP BY.

  • ORA-00980: synonym translation no longer valid

    трансляции синонима более не доступна

    Причина: Используемый вами синоним относился к таб-
    лице, обзору или синониму, которые удалены или переи-
    менованы.

    Действие: Замените синоним на имя таблицы, обзора,
    синонима, для которых он предназначался. Или заново
    создайте синоним для верных таблиц, обзоров или сино-
    нимов.

  • ORA-00981: cannot mix table and system-wide auditing options

    нет возможности совместить опцию контроля ширины таблицы
    и системы

    Причина: Одновременно опция ширины и таблицы и
    системы описаны в одном операторе AUDIT.

    Действие: Исправьте оператор.

  • ORA-00982: missing plus sign — пропущен знак плюс

    Причина: При присоединении после левой скобки нет
    знака плюс (+). При присоединении левая (открывающая)
    скобка интерпритируется как описывающая присоединение
    и ожидается знак плюс. Для описания присоединения к
    колонке, за описанием колонки следует поставить знак
    плюс, заключенный в скобки (+).

    Действие: Исправьте синтаксис SQL.

  • ORA-00984: column not allowed here — колонки здесь не употребимы

    Причина: Имя колонки было использовано там, где это запрещено,
    например в предложении VALUES оператора INSERT.

    Действие: Проверьте синтаксис команды и используйте имена колонок только там, где это допустимо.

  • ORA-00985: invalid program name — неверное имя программы

    Причина: Это свойство не реализовано.

    Действие: Не требуется ни каких действий пользователя.

  • ORA-00986: missing or invalid group name(s) — пропущено или неверное имя группы

    Причина: Это свойство не реализовано.

    Действие: Не требуется ни каких действий пользователя.

  • ORA-00987: missing or invalid user name(s)

    пропущено или неверное имя пользователя

    Причина: Имя пользователя не было описано в команде
    GRANT или одно из описанных имен неверное. Верные
    имена пользователей должны описываться после слова
    TO в команде GRANT. Допустимое имя пользователя
    начинается с буквы, содержит не более 30: символов
    и состоит только из букв, цифр и спецсимволов $,
    _ и #. Оно не должно быть зарезервированным словом.

    Действие: Опишите верное имя пользователя (или
    список пользователей ) после ключевого слова TO в
    команде GRANT.

  • ORA-00988: missing or invalid password(s)

    пропущен или неверный пароль(и)

    Причина: В команде GRANT описано имен пользователей
    больше, чем паролей. Допустимый пароль должен быть
    описан для каждого пользователя, перечисленного в
    команде GRANT.

    Действие: Введите правильный пароль для каждого
    пользователя.

  • ORA-00989:
    too many passwords for user names given — слишком много паролей для пользователей введено

    Причина: Паролей больше, чем было описано имен поль-
    зователей в команде GRANT. Только один пароль должен
    вводиться для каждого пользователя, перечисленного в
    команде GRANT.

    Действие: Введите одинаковое количество пользователей и паролей.

  • ORA-00990: missing or invalid privilege — пропущена или неверная привелегия

    Причина: В команде для привелегий GRANT не было
    описано никаких привелегий или одна из них неверная.

    Действие: Введите одну или более верных привелегий.
    Допустимы следущие привелегии: SELECT, INSERT, DELETE,
    UPDATE, ALTER, INDEX, DROP, CLUSTER и ALL. Более чем
    одну привелегию можно предоставить введя их в списке
    через запятую(,) или описывая словом ALL предоставлять
    все привелегии.

  • ORA-00991:
    unrecognizable format for GRANT command — неопознанный формат команды GRANT

    Причина: Введена неправильная форма команды GRANT.

    Действие: Проверьте синтаксис команды.Существует два
    типа команды GRANT. Первый тип используется для опре-
    деления доступа пользователей к базе данных и должен
    иметь следущий формат: GRANT CONNECT/RESOURCE/DBA TO
    <имя пользователя> INDENTIFIED BY <пароль>. По крайней
    мере одно из ключевых слов CONNECT, RESOURCE или DBA
    должно присутствовать. Второй тип используется для
    предоставления превелегий объектам базы данных и
    и имеет формат: GRANT <список привелегий> ON <обзор/
    таблица> TO < индентификатор пользователя>/PUBLIC.

  • ORA-00992:
    unrecognizable format for REVOKE command — неопознанный формат команды REVOKE

    Причина: Введена неправильная форма команды REVOKE.

    Действие: Проверьте синтаксис команды и повторите ее.

  • ORA-00993: missing GRANT keyword — пропущено ключевое слово GRANT

    Причина: Ключ WITH был описан в конце команды GRANT
    без ключа GRANT.Чтобы предоставить привелегии пользо-
    вателю и разрешение на предоставление их другим поль-
    зователям, следует использовать ключ WITH GRANT OPTIO
    в конце команды GRANT.

    Действие: Замените ключевое слово WITH на WITH GRANT OPTION.

  • ORA-00994: missing OPTION keyword — пропущено ключевое слово OPTIO

    Причина: Был использован ключ WITH GRANT в конце команды GRANT без слова OPTION.

    Действие: Замените ключ WITH GRANT на WITH GRANT OPTION.

  • ORA-00995:
    missing or invalid synonym indentifier — пропущен или неверный синоним индентификатора

    Причина: В командах CREATE или DROP SYNONYM имя синонима или было пропущено или неверное.

    Действие: Проверьте опечатки и синтаксис команды.
    Правильное имя синонима должно следовать сразу за ключом SYNONYM в обеих командах.
    Допустимое имя синонима начинается с буквы, содержит не более 30 символов
    и состоит только из букв, цифр и спецсимволов $, _ и #.
    Оно не должно быть зарезервированным словом.

  • ORA-00996:
    the concatenate operator is ¦¦ not ¦ — оператором конкатенации является ||, а не |

    Причина: Единичный штрих (|) был понят как попытка описать конкатенацию,
    но оператор конкатенации состоит из двух штрихов (||).

    Действие: Введите двойной штрих для операции конкатенации
    или удалите одиночный, если конкатенация не нужна.

  • ORA-00997:
    illegal use of long datatype (недопустимое использование типа данных LONG).

    Причина: Вы использовали тип данных LONG, используемый для хранения данных размером более 240 символов,
    в функции или в предложениях WHERE, GROUP BY, ORDER BY.
    Значение LONG может использоваться только в предложении SELECT.

    Действие: Удалите это поле из функции или предло жения.

  • ORA-00998:
    must name this expression with a column label (это выражение должно называться с псевдонима).

    Причина: В команде CREATE VIEW была использована
    функция или выражение, но не было описано соответствущее имя колонки.
    Когда для обзора используется выражение или функция,
    все имена колонок и обзоров должны правильно быть перечислены в команде CREATE VIEW.

    Действие: Введите все имена колонок обзора в
    скобках после имени обзора.

  • ORA-00999:
    invalid view name (неверное имя представления).

    Причина: В команде CREATE VIEW пропущено или неверное имя обзора.

    Действие: Введите сразу за CREATE VIEW верное имя обзора.
    Допустимое имя обзора начинается с буквы, содержит не более 30 символов
    и состоит только из букв, цифр и спецсимволов $,_ и #.
    Оно не должно быть зарезервированным словом.

На правах рекламы (см.
условия):


Ключевые слова для поиска сведений о значениях ошибок Oracle в диапазоне ORA-00000 — ORA-00999:

На русском языке: ошибки Oracle, коды оракловых ошибок;

На английском языке: ORA-00000: — ORA-00999.


Страница обновлена 28.09.2022

Яндекс.Метрика


October 11, 2020
ORACLE

This article contains information about Oracle PL/SQL Exception and Types such as system defined, user defined.

What is Exception in Oracle PL/SQL?

These are the structures used for the management of errors that occur during the execution of commands.

Oracle PL/SQL Exception Types

  • System-defined
  • User-defined

The use of the PL / SQL Exception structure is as follows.

DECLARE

     definitions

BEGIN

     commands

EXCEPTION

    WHEN HATATURU THEN

         commands

    WHEN OTHERS THEN

         commands

END;

Sample Exception Usage is as follows;

BEGIN

    DBMS_OUTPUT.put_line(3/0);

EXCEPTION

    WHEN ZERO_DIVIDE THEN

        DBMS_OUTPUT.put_line(‘Divide by zero error.’);

    WHEN OTHERS THEN

        DBMS_OUTPUT.put_line(‘unknown error.’);

END;

System Defined Exceptions in Oracle PL/SQL

The Exception type previously created by Oracle PL / SQL is called System defined.

System-defined exception types are listed below.

  • ACCESS_INTO_NULL
  • ASE_NOT_FOUND
  • COLLECTION_IS_NULL
  • DUP_VAL_ON_INDEX
  • INVALID_CURSOR
  • INVALID_NUMBER, LOGIN_DENIED
  • NO_DATA_FOUND
  • NOT_LOGGED_ON
  • PROGRAM_ERROR
  • ROWTYPE_MISMATCH
  • SELF_IS_NULL
  • STORAGE_ERROR
  • TOO_MANY_ROWS
  • VALUE_ERROR
  • ZERO_DIVIDE

User Defined Exceptions in Oracle PL/SQL

Oracle also allows custom exception definition. These Exception types are called user defined exceptions. You can create User Defined Exception as follows.

DECLARE

    MY_CUSTOM_ERROR EXCEPTION;

BEGIN

    NULL;

END;

We can set a special error code for the exception as follows.

DECLARE

    CUSTOM_ERROR EXCEPTION;

    PRAGMA EXCEPTION_INIT (CUSTOM_ERROR, 1453);

BEGIN

    NULL;

END;

The occured error can be triggered by RAISE.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

SET SERVEROUTPUT ON;

DECLARE

    CUSTOM_ERROR EXCEPTION;

    PRAGMA EXCEPTION_INIT (CUSTOM_ERROR, 1453);

    v_sayi PLS_INTEGER := ‘0’;

BEGIN

    IF v_sayi = 0 THEN

        RAISE CUSTOM_ERROR;

         RAISE_APPLICATION_ERROR(1453, ‘Another Error.’);

    END IF;

EXCEPTION

    WHEN CUSTOM_ERROR THEN

        DBMS_OUTPUT.put_line(‘Special Error Occured.’);

        DBMS_OUTPUT.put_line(SQLERRM);

    WHEN OTHERS THEN

        DBMS_OUTPUT.put_line(‘Unknown Error Occured.’);

END;

The RAISE_APPLICATION_ERROR function takes the “error code”, “error message”, and “whether the error should be replaced with existing errors” as parameters to create a custom error.

You can find more detailed information about below topics in the below link.

PL/SQL Tutorial

You will find below topics in this article.

  1. What is PL/SQL
  2. Oracle PL/SQL Data Types and Variables and Literals
  3. Oracle PL/SQL Operators
  4. Oracle PL/SQL Conditional Statements
  5. Oracle PL/SQL Loops
  6. Oracle PL/SQL Procedures and Procedure Parameters
  7. Oracle PL/SQL Functions
  8. Oracle PL/SQL Cursor
  9. Oracle PL/SQL Records
  10. Oracle PL/SQL Exception
  11. Oracle PL/SQL Trigger
  12. Oracle PL/SQL Packages
  13. Oracle PL/SQL Collections

You can find more information about exception at docs.oracle.com

Loading

В этом учебном материале вы узнаете, как использовать встроенные исключительные ситуации в Oracle/PLSQL c синтаксисом и примерами.

Описание

Встроенные исключительные ситуации это исключительные ситуации, которые имеют определенные имена в PL/SQL. Они определены в стандартном пакете в PL/SQL и не могут быть определены программистом.
Oracle имеет стандартный набор встроенных исключительных ситуаций:

Исключительные ситуации ORACLE Ошибки Oracle Пояснения
DUP_VAL_ON_INDEX ORA-00001 Вы пытались выполнить операторы insert или update поля, изменение значения которого нарушит ограничение уникальности поля.
TIMEOUT_ON_RESOURCE ORA-00051 Возбуждается при возникновении таймаута, когда ORACLE ожидает ресурса.
TRANSACTION_BACKED_OUT ORA-00061 Откат удаленной части транзакции.
INVALID_CURSOR ORA-01001 Вы пытаетесь сослаться на курсор, который еще не существует. Это могло произойти потому, что вы выполняете выборку (fetch) курсора, который был закрыт (close) или не был открыт (open).
NOT_LOGGED_ON ORA-01012 Вы пытаетесь выполнить вызов в Oracle, не подключившись к Oracle.
LOGIN_DENIED ORA-01017 Вы пытаетесь войти в Oracle с неверными имя пользователя / пароль.
NO_DATA_FOUND ORA-01403 Вы пробовали один из следующих вариантов:

  1. 1. Вы выполнили SELECT INTO и запрос не вернул ни одной строки.
  2. 2. Вы ссылаетесь на неинициализированную строку в таблице.
  3. 3. Вы читаете после конца файла пакета UTL_FILE.
TOO_MANY_ROWS ORA-01422 Вы пытались выполнить SELECT INTO и запрос вернул более одной строки.
ZERO_DIVIDE ORA-01476 Вы пытались поделить число на ноль.
INVALID_NUMBER ORA-01722 Вы пытаетесь выполнить оператор SQL который пытается преобразовать строку в число.
STORAGE_ERROR ORA-06500 Вы исчерпали доступную память или память повреждена.
PROGRAM_ERROR ORA-06501 Это общее сообщение Обратитесь в службу поддержки Oracle, возбуждается по причине обнаружения внутренней ошибки.
VALUE_ERROR ORA-06502 Вы пытались выполнить операцию и была ошибка преобразования, усечения, или ограничения числовых или символьных данных.
CURSOR_ALREADY_OPEN ORA-06511 Вы попытались открыть курсор, который уже открыт.

Синтаксис

Рассмотри синтаксис встроенных исключительных ситуаций в процедуре и функции.

Синтаксис для процедуры

CREATE [OR REPLACE] PROCEDURE procedure_name
[ (parameter [,parameter]) ]
IS
[declaration_section]BEGIN
executable_sectionEXCEPTION
WHEN exception_name1 THEN
[statements]

WHEN exception_name2 THEN
[statements]

WHEN exception_name_n THEN
[statements]

WHEN OTHERS THEN
[statements]

END [procedure_name];

Синтаксис для функции

CREATE [OR REPLACE] FUNCTION function_name
[ (parameter [,parameter]) ]
RETURN return_datatype
IS | AS
[declaration_section]BEGIN
executable_sectionEXCEPTION
WHEN exception_name1 THEN
[statements]

WHEN exception_name2 THEN
[statements]

WHEN exception_name_n THEN
[statements]

WHEN OTHERS THEN
[statements]

END [function_name];

Пример использования исключительных ситуаций в процедуре.

CREATE OR REPLACE PROCEDURE add_new_supplier

   (supplier_id_in IN NUMBER, supplier_name_in IN VARCHAR2)

IS

BEGIN

   INSERT INTO suppliers (supplier_id, supplier_name )

   VALUES ( supplier_id_in, supplier_name_in );

EXCEPTION

   WHEN DUP_VAL_ON_INDEX THEN

      raise_application_error (-20001,‘Вы пытались вставить дубликат supplier_id.’);

   WHEN OTHERS THEN

      raise_application_error (-20002,‘Произошла ошибка при вставке supplier.’);

END;

В этом примере, мы перехватываем исключительную ситуацию DUP_VAL_ON_INDEX. Мы можем также использовать WHEN OTHERS, чтобы перехватить остальные исключительные ситуации.

Like this post? Please share to your friends:
  • Код ошибки при активации windows 7 0x803fa067
  • Код ошибки оперативной памяти 1202
  • Код ошибки планар 3 квт сухой фен
  • Код ошибки о160 мегафон
  • Код ошибки при активации windows 10 0xc004f213