|

Стандартные исключения PLSQL| Исключение | Oracle Error | SQLCODE Value | | CURSOR_ALREADY_OPEN | ORA-06511 | -6511 | | DUP_VAL_ON_INDEX | ORA-00001 | -1 | | INVALID_CURSOR | ORA-01001 | -1001 | | INVALID_NUMBER | ORA-01722 | -1722 | | LOGIN_DENIED | ORA-01017 | -1017 | | NO_DATA-FOUND | ORA-01403 | +100 | | NOT_LOGGED_ON | ORA-01012 | -1012 | | PROGRAM_ERROR | ORA-06501 | -6501 | | ROWTYPE_MISMATCH | ORA-06504 | -6504 | | STORAGE_ERROR | ORA-06500 | -6500 | | TIMEOUT_ON_RESOURCE | ORA-00051 | -51 | | TOO_MANY_ROWS | ORA-01422 | -1422 | | VALUE_ERROR | ORA-06502 | -6502 | | ZERO_DIVIDE | ORA-01476 | -1476 |
Чтобы ознакомится с более подробным списком исключений, смотрите Oracle7 Server Messages. Описание исключений : CURSOR_ALREADY_OPEN вызывается, если вы раннее уже открыли данный курсор. Вы должны закрыть курсор, перед тем как снова открыть его. Курсор для цикла FOR открывается автоматически , поэтому вы не можете выполнить кусорный цикл по уже открытому курсору. DUP_VAL_ON_INDEX вызывается при попытке сохранить несколько одинаковых значений в колонку таблицы, когда на данную колонку установлен уникальный индекс. INVALID_CURSOR вызываетется ,если вы пытаетесь выполнить некорректную операцию с курсором. Например, INVALID_CURSOR вызывается, если вы пытаетесь закрыть еще не открытый курсор. INVALID_NUMBER вызывается в SQL выражениях, когда не получается корректно конвертировать строку в число , потому что строка не преобразуется корректно в число. Например, следующее выражение INSERT вызывает INVALID_NUMBER когда Oracle пытается преобразовать строку 'HALL' в число: INSERT INTO emp (empno, ename, deptno) VALUES ('HALL', 7888, 20);Следует помнить, что процедурных выражениях вызывается исключение VALUE_ERROR . LOGIN_DENIED вызывается если вы пытаетесь соединится с Oracle с неправильным именем пользователя или паролем. NO_DATA_FOUND вызывается если в выражение SELECT INTO не возвращает ни одной строки или если вы обращаетесь к неустановленной строке в PL/SQL таблице. Выражение FETCH в случае когда не выбрано строк, выполняется успешно, не вызывая исключения. Групповые выражения SQL ,такие как AVG и SUM всегда возвращают значение или null. Так, выражение SELECT INTO statement с групповой функцией никогда не вызовет исключение NO_DATA_FOUND. NOT_LOGGED_ON вызывается если вы в PL/SQL приложении обращаетесь к базе данных без предварительного соединения с Oracle. PROGRAM_ERROR вызывается если в PL/SQL при внутренниих структурных ошибках. ROWTYPE_MISMATCH вызывается , когда курсор или выражение PL/SQL вы пытаетесь преобразовать к перемнной несовместимого типа. Например, когда вы открыли курсор в хранимой процедуре, если возвращаемый тип имеет несовметимый формат параметров, PL/SQL вызывает ROWTYPE_MISMATCH. STORAGE_ERROR вызывается если PL/SQL не хватет оперативной памяти или в опративной памяти есть поврежденные блоки. TIMEOUT_ON_RESOURCE вызвается когда превышен интервал ожидания Oracle необходимого ресурса. TOO_MANY_ROWS вызывается если в выражение SELECT INTO возвращается более одной строки. VALUE_ERROR возникает в операциях преобразования , математических операциях , или когда не совпадает размерность типов. Например, когда вы выбираете значение колонки строку, и если длина переменно меньше размерности данной строки, PL/SQL прерывает выполнение программы исключением VALUE_ERROR. В процедурных выражениях, VALUE_ERROR вызывается если преобразование строки в число ошибочно. Например, следующее выражение вызывает VALUE_ERROR когда PL/SQL пытается преобразовать строку 'HALL' в число: DECLARE my_empno NUMBER(4); my_ename CHAR(10); BEGIN my_empno := 'HALL'; -- raises VALUE_ERROR в выражениях SQL вызывается исключение INVALID_NUMBER ZERO_DIVIDE вызывается при попытке деления на ноль. |