| Стандартные исключения PLSQL |
Стандартные исключения PLSQL
Описание исключений : 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 |
||||||||||||||||||||||||||||||||||||||||||||||