Выйти из цикла oracle

Обновлено: 03.07.2024

С начала лета я вплотную работаю с технологиями Oracle, как можно понять и по другим постам, в частности с процедурным расширением языка cтруктурированных запросов PL/SQL. Я решил написать пару записей на эту тему и начинаю с циклов.

Сначала рассмотрим простейший вариант цикла FOR, в котором посчитаем от одного до десяти и выведем значение переменной i. Скопируйте приведённый ниже блок PL/SQL и выполните его в Oracle SQL Developerб Apex SQL Workshop или другом инструменте для работы с базами данных на ваш выбор. (Примечание: Если процедура DBMS_OUTPUT.PUT_LINE не работает, включите вывод данных командой SET SERVEROUTPUT ON .)

Чтобы сделать то же самое в цикле WHILE, нужно объявить (например) цифровую переменную и повышать счётчик при каждом шаге. В нашем случае переменная i имеет в начале значение 1 и в конце петли ей присваивается новое значение — на единицу больше. Цикл исполняется до тех пор, пока значение i ниже или равняется десяти.

Если вы ищите в цикле только один результат и вам необязательно проходить цикл до конца, то его выполнение можно прервать оператором EXIT. Ниже всё тот же WHILE, но хотя в условии говорится, что считать будем до десяти, внутри петли цикл обрывается, когда переменная равняется трём.

Для последнего примера цикла FOR с запросом SQL понадобится простенькая таблица в базе данных, в моём примере с двумя колонками - в одной числа, в другой строки.

Таблица может содержать, например, такие данные.

Скриншот 1: Таблица в примере

Скриншот 1: Таблица в примере

В качестве аргумента оператору IN можно передать не только значения от и до, но и целый SQL-запрос. Выбранные через SELECT колонки (в примере number_column и text_column) можно использовать в петле через переменную i (i.number_column, i.text_column).

Понравился пост? Поделись в соцсетях и подписывайся на аккаунты в Twitter и Facebook!

Существует три модификации оператора условного перехода:

Все это справедливо, если внутри последовательности команд нет операторов, осуществляющих переход за пределы этой последовательности.

Метки и оператор безусловного перехода (GOTO)

В любом месте программы может быть поставлена метка, имеющая синтаксис: <<имя_метки>>
Оператор GOTO позволяет осуществить безусловный переход к метке, имя которой должно быть уникальным внутри программы или блока PL/SQL. Например, управление передается вниз к помеченному оператору:

В следующем примере управление передается вверх к помеченной последовательности операторов:

Следует отметить, что использование GOTO (особенно в тех случаях, когда метка предшествует оператору GOTO) может привести к сложным, нераспознаваемым кодам ошибок, которые трудно обрабатывать. Поэтому реже используйте GOTO, тем более что этот оператор нельзя использовать для выполнения перехода:

  • в IF-блок, LOOP-блок или в другой блок, не включающий текущий;
  • из одного предложения IF-оператора к другому;
  • из внешнего блока в SUB-блок;
  • из обработчика особых ситуаций в текущий блок.

и приводит к бесконечному повторению последовательности команд, если внутри нее нет команд EXIT (выход из цикла), RAISE (вызов обработчика исключительных ситуаций) или GOTO (безусловный переход). Например,

LOOP
последовательность команд;
IF условие THEN EXIT;
END LOOP;

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

Цикл WHILE предназначен для повторения последовательности команд, пока условие остается истинным:

WHILE условие LOOP
последовательность команд;
END LOOP;

Наиболее распространен цикл FOR, имеющий следующий синтаксис:

FOR индекс IN [REVERSE] нижняя_граница..верхняя_граница LOOP
последовательность команд;
END LOOP;

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

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

Подобно PL/SQL блокам, циклы могут быть помечены. Метка устанавливается в начале оператора LOOP, следующим образом:

Имя метки может также появляться в конце утверждения LOOP как в примере:

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

Если требуется преждевременно выйти из вложенного цикла FOR, маркируйте цикл и используйте метку в утверждении EXIT. Например:

Операторы EXIT, EXIT-WHEN и NULL

EXIT используется для завершения цикла, когда дальнейшая обработка нежелательна или невозможна. Внутри цикла можно помещать один или большее
количество операторов EXIT. Имеются две формы EXIT: EXIT и EXIT-WHEN.

По оператору EXIT цикл завершается немедленно и управление переходит к следующему за END LOOP оператору. Например:

По оператору EXIT-WHEN цикл завершиться только в том случае, когда становится истинным условие в предложении WHEN. Например:

Оператор EXIT-WHEN позволяет завершать цикл преждевременно. Например, следующий цикл обычно выполняется десять раз, но как только не находится значение s1, цикл завершается независимо от того сколько раз цикл выполнился.

Запись опубликована 09.04.2010 в 6:32 дп и размещена в рубрике Oracle7 краткий справочник. Вы можете следить за обсуждением этой записи с помощью ленты RSS 2.0. Можно оставить комментарий или сделать обратную ссылку с вашего сайта.

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

В этом уроке мы увидим концепцию цикла в PL / SQL и поток управления в циклах. Ты выучишь-

Введение в концепцию Loops

Концепция Loops обеспечивает следующее преимущество в кодировании.

  • Повторное использование кода
  • Уменьшенный размер кода
  • Легкое управление
  • Снижение сложности

Диаграмма ниже показывает концепцию зацикливания в графической форме

Циклы в PL / SQL

На приведенной выше диаграмме условие цикла будет проверено, и до тех пор, пока условие цикла будет выполнено, будет выполнен блок выполнения.

В каждой итерации переменная счетчика цикла, которая фактически решает условие цикла, должна изменяться, чтобы сделать выход управления из цикла. В некоторых случаях эта переменная счетчика цикла является оператором увеличения / уменьшения для предварительно определенного счетчика, а в некоторых случаях это условие поиска, которое продолжает выполнение блока до тех пор, пока он не удовлетворит его.

Loop Control Заявления

ПРОДОЛЖИТЬ

Это ключевое слово отправляет механизму PL / SQL инструкцию, которая всякий раз, когда движок PL / SQL встречает это ключевое слово в цикле, пропускает оставшийся код в блоке выполнения кода, и следующая итерация начинается немедленно. Это будет в основном использоваться, если код внутри цикла хочет пропустить для определенных значений итерации.

EXIT / EXIT WHEN

Это ключевое слово отправляет механизму PL / SQL инструкцию, что всякий раз, когда ядро ​​PL / SQL встречает это ключевое слово, оно немедленно выходит из текущего цикла. Если механизм PL / SQL встречает EXIT во вложенном цикле, то он выйдет из цикла, в котором он был определен, то есть во вложенных циклах, если EXIT во внутреннем цикле выйдет из управления только из внутреннего цикла, но не из внешней петли. «EXIT WHEN» сопровождается выражением, которое дает логический результат. Если результат равен ИСТИНА, тогда элемент управления ВЫХОДИТ.

ПЕРЕЙТИ К

Этот оператор перенесет элемент управления в помеченный оператор («GOTO <label>;»). Это имеет следующие ограничения

  • Передача управления может быть осуществлена ​​только в рамках подпрограмм.
  • Передача управления не может быть выполнена из части обработки исключений в часть исполнения

Использование этого оператора не рекомендуется, если нет других альтернатив, поскольку отслеживание контроля кода в программе будет очень затруднено из-за передачи управления из одной части в другую.

PL / SQL предоставляет следующие три типа циклов

  • Базовый цикл
  • Для оператора цикла
  • Оператор цикла

Базовое утверждение цикла

Этот оператор цикла является самой простой структурой цикла в PL / SQL. Блок выполнения начинается с ключевого слова «LOOP» и заканчивается ключевым словом «END LOOP».

Условие выхода должно быть задано внутри этого исполнительного блока, чтобы управление выходило из цикла.

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

Циклы в PL / SQL

Синтаксис Объяснение:

  • В приведенном выше синтаксисе ключевое слово «LOOP» отмечает начало цикла, а «END LOOP» отмечает конец цикла.
  • Блок выполнения содержит весь код, который должен быть выполнен, включая условие EXIT.
  • Часть выполнения может содержать любой оператор выполнения.

Примечание. Базовый оператор цикла без ключевого слова EXIT будет бесконечным циклом, который никогда не остановится.

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

Циклы в PL / SQL

Объяснение кода:

  • Строка кода 2 : объявление переменной «a» как типа данных «NUMBER» и инициализация ее значением «1».
  • Строка кода 4 : печать заявления «Программа запущена».
  • Строка кода 5: Ключевое слово «LOOP» отмечает начало цикла.
  • Строка кода 6: печатает значение «а».
  • Строка кода 7: увеличивает значение «а» на +1.
  • Строка кода 8: проверяет, больше ли значение «а», чем 5.
  • Строка кода 9: Ключевое слово «END LOOP» отмечает конец блока выполнения.
  • Код из строки 6 в строку 8 будет продолжать выполняться до тех пор, пока «а» не достигнет значения 6, так как условие вернет ИСТИНА и элемент управления выйдет из цикла.
  • Строка кода 10: печать заявления «Программа выполнена»

Маркировка петель

В PL / SQL циклы могут быть помечены. Метка должна быть заключена между «<<» и «>>». Маркировка циклов, особенно в кодах вложенных циклов, обеспечит большую читабельность. Метка может быть дана в команде EXIT для выхода из этого конкретного цикла. Используя метку, можно сделать элемент управления для непосредственного выхода из внешнего цикла вложенных циклов из любого места внутри циклов, выдав команду выхода с последующей меткой внешнего цикла.

Циклы в PL / SQL

Синтаксис Объяснение:

  • В приведенном выше синтаксисе цикл out имеет еще один цикл.
  • «<< OUTER_LOOP >>» и «<< INNER_LOOP >>» являются метками этих циклов.

Пример 1 : В этом примере мы собираемся напечатать число, начинающееся с 1, используя инструкцию цикла Basic. Каждое число будет напечатано столько раз, сколько его значение. Верхний предел серии фиксируется в части описания программы. Давайте узнаем, как мы можем использовать концепцию этикетки для достижения этой цели. Для этого мы выполним следующий код


Programming Language for SQL (PL/SQL) – решение Oracle, предоставляющее средства, которые позволяют выполнять сложную обработку информации (plsql).

Программные единицы PL/SQL

Структура блока PL/SQL

Блок PL/SQL может содержать до четырех разделов, однако только один из них является обязательным.

  • Заголовок. Используется только в именованных блоках, определяет способ вызова именованного блока или программы. Не обязателен.
  • Раздел объявлений. Содержит описания переменных, курсоров и вложенных блоков, на которые имеются ссылки в исполняемом разделе и разделе исключений. Не обязателен.
  • Исполняемый раздел. Команды, выполняемые ядром PL/SQL во время работы приложения. Обязателен.
  • Раздел исключений. Обрабатывает исключения (предупреждения и ошибки). Не обязателен.

Хранимая процедура

Хранимая процедура — это определенный набор инструкций, написанных на языке PL/SQL. Вызов процедуры приводит к выполнению содержащихся в ней инструкций. Процедура хранится в базе данных, поэтому и называется хранимой. Процедура состоит из двух основных частей:спецификации и тела.
Спецификация процедуры (procedure specification) включает в себя имя процедуры и описание ее входных и выходных данных. Эти входные и выходные данные называются формальными параметрами (formal parameters) или формальными аргументами (formal arguments). Если при вызове процедуры указываются параметры командной строки или другие входные данные, эти значения называются фактическими (actual) параметрами или фактическими аргументами.
Пример спецификации

increase_salary_find_tax ( increase_percent IN NUMBER : = 7 , sal IN OUT NUMBER , tax OUT NUMBER )

Здесь мы видим процедуру с тремя формальными параметрами. Слово IN после имени параметра означает, что при вызове процедура может считать из этого параметра входное значение. Слово OUT означает, что процедура может использовать данный параметр для возврата значения в ту программу, из которой она была вызвана. Комбинация IN OUT после имени параметра говорит о том, что параметр может использоваться как для передачи значения процедуре, так и для возврата значения.
Тело процедуры (procedure body) — это блок PL/SQL-кода.

Хранимые функции

Функция PL/SQL похожа на процедуру PL/SQL: она также имеет спецификацию и тело. Главное различие между процедурой и функцией в том, что функция предназначена для возврата значения, которое может использоваться в более крупном SQL-Операторе.

Триггеры

Триггер — это процедура PL/SQL, которая выполняется автоматически, когда происходит некоторое заданное событие, называемое триггерным событием (triggering event).
Например, можно писать триггеры, срабатывающие при выполнении над таблицей операций INSERT, UPDATE или DELETE; при выдаче команд DDL; при входе пользователя в систему или его выходе из системы; при запуске или останове базы данных; при возникновении ошибок.
Между триггерами и процедурами PL/SQL есть три различия:

  • Триггеры нельзя вызывать из кода программы. Oracle вызывает их автоматически в ответ на определенное событие.
  • Триггеры не имеют списка параметров.
  • Спецификация триггера немного отличается от спецификации процедуры.

Структура блока PL/SQL

Базовый блок PL/SQL состоит из четырех секций:

  • секции заголовка (header section);
  • необязательной секции объявлений (declaration section);
  • выполняемой секции (execution section);
  • необязательной секции исключений (exception section).

Анонимный блок (anonumous block) — это блок PL/SQL без секции заголовка, иначе говоря, секции имени, поэтому он и называется анонимным. Анонимные блоки могут выполняться из SQL*Plus и использоваться в функциях, процедурах и триггерах PL/SQL. Вспомните, что сами процедуры, функции и триггеры также состоят из базовых блоков. Это означает, что базовый блок можно помещать в другой базовый блок.

Секция объявлений

Секция объявлений не является обязательной. В случае использования она начинается после секции заголовка и оканчивается перед ключевым, словом BEGIN. Эта секция содержит объявления переменных, констант, курсоров, исключений, функций и процедур PL/SQL, которые будут использоваться в выполняемой секции и секции исключений. Все объявления переменных и констант должны размещаться до объявлений функций или процедур. О переменных и константах PL/SQL будет подробно рассказано в следующем разделе. Объявление сообщает PL/SQL о том, что нужно создать переменную, константу, курсор, функцию или процедуру согласно приведенной спецификации. Когда выполнение базового блока завершается, все элементы, объявленные в секции объявлений, перестают существовать. Элементы, объявленные в секции объявлений базового блока, могут использоваться только в пределах этого блока. Одним словом, все, что находится в секции объявлений, при надлежит блоку и может использоваться только внутри него, а следовательно, существует только на протяжении его времени жизни. Часть кода, в которой может использоваться переменная, называется областью видимости (scope).

Выполняемая секция

Выполняемая секция начинается с ключевого слова BEGIN и заканчивается либо ключевым словом EXCEPTION, если присутствует секция исключений, либо ключевым словом END, за которым следуют необязательное имя функции или процедуры и точка с запятой. Выполняемая секция содержит один и более PL/SQL-операторов, выполняемых при передаче управления данному блоку. Структура выполняемой секции показана ниже.

В выполняемом коде PL/SQL чаще всего встречается оператор присваивания (:=). Он указывает, что нужно вычислить выражение справа и поместить результат в переменную слева.

Секция исключений

действия , предпринимаемые при возникновении исключения действия , предпринимаемые при возникновении исключения

Секция исключений начинается с ключевого слова EXCEPTION и продолжается до конца блока. Каждому исключению соответствует оператор WHEN имя_исключения, указывающий, что должно быть сделано при возникновении данного исключения. Все операторы, находящиеся между оператором, вызвавшим ошибку, и секцией исключений, игнорируются. Выполнение оператора, указанного в секции исключений, называется обработкой исключения (exception handling). Процесс, включающий в себя обнаружение ошибки, определение, какое исключение описывает ее наилучшим образом, и передачу PL/SQL информации, позволяющей найти соответствующий код в секции исключений, называется возбуждением исключения (raising exception).

Переменные

Переменные — это именованные контейнеры. Они могут содержать информацию (данные) различных видов. В зависимости от того, какую информацию в них можно помещать, они имеют различные типы данных, а чтобы отличать их друг от друга, им присваиваются имена. PL/SQL хранит числа в переменных типа NUMBER, а текст — в переменных типа CHAR или VARCHAR2. Синтаксис объявления переменной в PL/SQL может иметь любую из следующих форм:

имя _ переменной тип _ данных [ [ NOTNULL ] : = выражение _ по _ умолчанию ] ; имя _ переменной тип _ данных [ [ NOT NULL ] DEFAULT выражение _ по _ умолчанию ] ;

Имя_переменной — это любой правильный идентификатор PL/SQL. Правильный идентификатор PL/SQL должен:

Тип_данных — это любой допустимый тип данных SQL или PL/SQL. Модификатор NOT NULL требует, чтобы переменная имелазначение. Если он указан, переменной должно быть присвоено значение по умолчанию.

Объявление констант PL/SQL

Синтаксис объявления константы имеет следующий вид:

имя _ переменной тип _ данных CONSTANT : = выражение ;

В отличие от переменных константам обязательно присваивается значение, которое нельзя изменять на протяжении времени жизни константы. Константы очень полезны для поддержания безопасности и дисциплины при разработке больших и сложных приложений. Например, если вы хотите гарантировать, что процедура PL/SQL не будет модифицировать передаваемые ей данные, можете объявить их константами. Если процедура все же попытается их модифицировать, PL/SQL возбудит исключение.

Оператор IF

Оператор IF имеет следующий синтаксис:

Циклы

PL/SQL предоставляет три различные конструкции для итеративной обработки. Каждая из них позволяет циклически выполнять набор операторов PL/SQL. Выход из цикла осуществляется в зависимости от некоторого условия.

Конструкция LOOP имеет следующий синтаксис:

Цикл WHILE

Еще одной разновидностью цикла является цикл WHILE. Он хорошо подходит в ситуациях, когда количество итераций заранее неизвестно, и определяется некоторым внешним фактором. Цикл WHILE имеет следующий синтаксис:

Цикл FOR

В цикле FOR для подсчета итераций используется переменная-счетчик, называемая также индексом цикла (loop index). По завершении каждой итерации счетчик увеличивается, начиная с нижнего предела, или уменьшается, начиная с верхнего предела. Как только его значение выйдет за указанный диапазон, цикл завершается. Синтаксис цикла FOR выглядит следующим бразом:

FOR счетчик IN [ REVERSE ] нижняя _ граница . . верхняя _ граница LOOP

Курсоры

Объявление курсора и атрибуты курсора

Курсор объявляется в процедуре PL/SQL следующим образом:

оператор _select [ FOR UPDATE [ OF таблица _ или _ столбец _1 [ , таблица _ или _ столбец _2 . . . ] ] ]

Параметры курсора похожи на параметры процедуры, за тем исключением, что они всегда являются входными (IN). Использование параметров OUT или IN OUT невозможно, поскольку курсор не может их модифицировать. Параметры используются в конструкции WHERE курсорного оператора SELECT. Спецификация возврата показывает, записи какого типа будут выбираться оператором SELECT. Таблица_или_столбец — это имя столбца, который предстоит обновлять, или имя таблицы, в которой предстоит удалять или обновлять строки. Оно должно входить в число имен таблиц и столбцов, указанных в операторе SELECT курсора, и предназначено для документирования, показывая, какие элементы могут быть потенциально модифицированы кодом, использующим данный курсор. Команда FOR UPDATE блокирует строки, выбранные оператором SELECT при открытии курсора. Строки остаются заблокированными до тех пор, пока вы не закроете курсор рассмотренными выше способами. Атрибуты курсора:

Записи PL/SQL

Запись PL/SQL— это набор данных базовых типов. К ней можно обращаться, как к единому целому. Для доступа к отдельным полям записи применяется нотация имя_записи_имя_поля, которую вы уже использовали для столбцов таблицы. Записи могут иметь один из трех типов, перечисленных ниже; вы можете объявлять переменные, имеющие тип записи.

  • Основанные на таблице (table-based) Эти записи имеют поля, совпадающие по имени и типу со столбцами таблицы. Если курсор выбирает всю строку — например, оператором SELECT * FROM некоторая_таблица — то возвращаемые им записи можно непосредственно копировать в переменную, имеющую тип записи, основанной на таблице некоторая_таблица.
  • Основанные на курсоре (cursor-based) Поля этих записей совпадают по имени, типу и порядку с заключительным списком столбцов в курсорном операторе SELECT.
  • Определенные программистом (programmer-defined) Это записи, тип которых определяете вы сами.

Использование команд OPEN, FETCH и CLOSE

Команды открытия курсора, выборки из курсора и закрытия курсора имеют следующий синтаксис:

FETCH имя _ курсора INTO переменная _ или _ список _ переменных ;

После открытия курсор содержит набор записей, если в результате успешного выполнения оператора SELECT из базы данных были выбраны заданные строки. Каждая команда FETCH удаляет запись из открытого курсора и перемещает ее содержимое либо в переменную PL/SQL, тип записи которой совпадает с типом записи курсора, либо в группу переменных PL/SQL, где каждая переменная в списке совпадает по типу с соответствующим полем в записи курсора. Перед тем как пытаться выбрать из курсора очередную запись, следует проверить с помощью атрибутов FOUND и NOTFOUND, есть ли в нем еще записи. Выборки из пустого курсора будут все время давать последнюю запись, не приводя к ошибке. Не забывайте проверять атрибуты FOUND и NOTFOUND при использовании FETCH. Фактическая обработка записей из курсора обычно выполняется внутри цикла. При написании такого цикла неплохо начать с проверки, была ли найдена запись в курсоре. Если да, можно продолжать необходимую обработку; в противном случае следует выйти из цикла. То же самое можно сделать более коротким путем, использовав курсорный цикл FOR. При этом PL/SQL будет осуществлять открытие, выборку и закрытие без вашего участия.

Курсорный цикл FOR

Синтаксис курсорного цикла FOR имеет следующий вид:

Конструкция WHERE CURRENT OF

Когда курсор открывается для обновления или удаления выбранных записей, можно использовать конструкцию WHERE CURRENT OF имя_курсора для доступа к таблице и строке, которые соответствуют последней записи, выбранной в конструкции WHERE оператора UPDATE или DELETE.

Обработка ошибок

В языке PL/SQL ошибки всех видов интерпретируются как исключения — ситуации, которые не должны возникать при нормальном выполнении программы.
К числу исключений относятся:

  • ошибки, генерируемые системой (например, нехватка памяти или повторяющееся значение индекса);
  • ошибки, вызванные действиями пользователя;
  • предупреждения, выдаваемые приложением пользователю.

exception_plsql

PL/SQL перехватывает ошибки и реагирует на них при помощи так называемых обработчиков исключений. Механизм обработчиков исключений позволяет четко отделить код обработки ошибок от основной логики программы, а также дает возможность реализовать обработку ошибок, управляемую событиями. Независимо от того, как и по какой причине возникло конкретное исключение, оно всегда обрабатывается одним и тем же обработчиком в разделе исключений.
При возникновении ошибки — как системной, так и ошибки в приложении — в PL/SQL инициируется исключение. В результате выполнение блока прерывается, и управление передается для обработки в раздел исключений текущего блока, если он имеется. После обработки исключения возврат в тот блок, где исключение было инициировано, невозможен, поэтому управление передается во внешний блок.
Схема передачи управления при возникновении исключения:

Существует два типа исключений:

  • Системное исключение определяется в Oracle и обычно инициируется исполняемым ядром PL/SQL, обнаружившим ошибку. Одним системным исключениям присваиваются имена (например, NO_DATA_FOUND), другие ограничиваются номерами и описаниями.
  • Исключение, определяемое программистом, актуально только для конкретного приложения. Имя исключения можно связать с конкретной ошибкой Oracle с помощью директивы компилятора EXCEPTION_INIT или же назначить ошибке номер и описание процедурой RAISE_APPLICATION_ERROR.

Исключения

Системные исключения

Исключения, определяемые программистом

Одной из удобных возможностей PL/SQL является то, что он позволяет вам определять свои собственные исключения. При возбуждении и обработке они должны именоваться и объявляться аналогично любым другим элементам PL/SQL. Исключение объявляется в секции объявлений. Аналогично любой другой объявленной там переменной, исключение действительно только для данного блока. Вы можете использовать свои собственные исключения для обработки ошибок, которые система не обнаруживает или не считает за ошибки.

Схема сложного запроса PL/SQL с использованием временных таблиц

Ниже рассмотрена схема получения результирующей таблицы в Oracle Database, используя временные таблицы.

Читайте также: