УПРАВЛЕНИЕ ПОТОКОМ В БЛОКАХ PL/SQL. Управление потоком операций в PL/SQL Логический поток операций можно изменять с помощью управляющих структур: Структуры.

Презентация:



Advertisements
Похожие презентации
Основы языка PL/SQL Управляющие конструкции Границы моего языка означают границы моего мира. Людвиг Виттгенштейн.
Advertisements

PL/SQL Введение 1. Типы данных Типы доступные SQL (в Oracle) BOOLEAN CHAR NUMBER RECORD TABLE.
Обработка исключений Гудов А.М., Завозкин С.Ю
PL/SQL Курсоры. Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа.
Обработка запросов с использованием курсоров. Что такое курсор? Каждая команда SQL, выполняемая на сервере Oracle, имеет свой курсор. Два типа курсоров:
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Лекция 3 Операторы Цикла 1 Российский государственный университет нефти и газа имени И.М. Губкина Кафедра «Информатики»
PL/SQL Взаимодействие с СУБД. Специальные типы Имя_таблицы.имя_столбца%TYPE Имя_таблицы%ROWTYPE; Имя_курсора%ROWTYPE;
Виды алгоритмических структур: –блок-схема. –линейный алгоритм. –алгоритмическая структура «ветвление». –алгоритмическая структура «выбор». –алгоритмическая.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Базы данных Язык запросов SQL. Команда SELECT. Команда SELECT – выборка данных Общий синтаксис: SELECT [{ ALL | DISTINCT }] { список_вывода | * } FROM.
Операторы языка. Арифметические операторы Арифметические операторы Арифметические операторы Арифметические операторы Операторы сравнения Операторы сравнения.
Оператор ветвления. Для реализации ветвления в программе используют условный оператор (оператор ветвления). Условный оператор в полной форме записывается.
Оператор ветвления (условный оператор) позволяет изменить порядок выполнения операторов в зависимости от выполнения некоторого условия (истинности логического.
Ветвления 8 класс. 2 Основные теоретические сведения Примеры решения задач.
Циклом Циклом называется операция, в которой одни и те же действия повторяются многократно. Цикл состоит из оператора цикла и тела цикла. Оператор цикла.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
PL/SQL Программная конструкция ОписаниеСреда выполнения Анонимный блок Неименованный блок PL/SQL, вставленный в приложение или созданный интерактивно.
ТЕМА: «ПРОВЕРКА УСЛОВИЯ» 8 – 9 класс Логунова Наталия Борисовна учитель информатики и ИКТ высшей категории МОСКВА, 2012.
Программирование на Pascal. Темы Повторение. Составные логические условия Повторение. Составные логические условия Повторение. Составные логические условия.
Транксрипт:

УПРАВЛЕНИЕ ПОТОКОМ В БЛОКАХ PL/SQL

Управление потоком операций в PL/SQL Логический поток операций можно изменять с помощью управляющих структур: Структуры условного управления (оператор IF) Циклы - простой цикл - цикл FOR - цикл WHILE - оператор EXIT

Оператор IF IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statements;] END IF; IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statements;] END IF; ELSIF – одно словоELSIF – одно слово END IF – два словаEND IF – два слова Предложение ELSE может быть только одноПредложение ELSE может быть только одно Действия можно выполнять выборочнов зависимости от определенных условий:

Оператор IF. Примеры... IF V_last_name =Dumas THEN v_job:=Sales Representative; v_region_id:=35; END IF; IF V_last_name =Dumas THEN v_job:=Sales Representative; v_region_id:=35; END IF; IF v_date_shipped – v_date_ordered

Оператор IF-THEN-ELSIF: пример... IF v_start > 100 THEN RETURN (2 * v_start); ELSIF v_start>=50 THEN RETURN (.5 * v_start); ELSE RETURN (.0 * v_start); END IF;... IF v_start > 100 THEN RETURN (2 * v_start); ELSIF v_start>=50 THEN RETURN (.5 * v_start); ELSE RETURN (.0 * v_start); END IF;... Вычисление одного значения на основе другого.

Задание логических условий Неопределенные значения можно обрабатывать с помощью оператора IS NULL Выражение, содержащее неопределенные значения, дает результат NULL Результатом конкатенации выражения с неопределенным значением является пустая строка

Таблицы истинности Построение простого логического условия с оператором сравнения AND TRUE FALSENULL TRUE FALSENULL FALSE NULL FALSENULL OR TRUE FALSENULL TRUE FALSETRUEFALSENULL TRUENULL NOT TRUEFALSE TRUE NULL

Логические условия V_flag:=v_reorder_flag AND v_anailable_flag V_reorder_flagV_anailable_flagVALUE TRUE NULL TRUE FALSE TRYE FALSE Каково значение v_falg в каждом случае?

Циклы Цикл позволяет выполнить последовательность предложений несколько раз Три типа циклов: - простой цикл - цикл FOR - цикл WHILE

Простой цикл: синтаксис LOOP -- ограничитель statement1;-- оператор … EXIT [WHEN condition]; --оператор EXIT END LOOP;-- ограничитель LOOP -- ограничитель statement1;-- оператор … EXIT [WHEN condition]; --оператор EXIT END LOOP;-- ограничитель Без предложения EXIT цикл был бы бесконечным Многократное выполнение команд с помощью простого цикла

Простой цикл: пример... v_ord_id s_item.ord_id%TYPE:=101; v_counter NUMBER(2):=1; BEGIN... LOOP INSERT INTO s_item (ord_id, item_id) VALUES (v_ord_id, v_counter); v_counter:= v_counter+1; EXIT WHEN v_counter>10; END LOOP;... v_ord_id s_item.ord_id%TYPE:=101; v_counter NUMBER(2):=1; BEGIN... LOOP INSERT INTO s_item (ord_id, item_id) VALUES (v_ord_id, v_counter); v_counter:= v_counter+1; EXIT WHEN v_counter>10; END LOOP;... Включение первых десяти товарных позиций в заказ номер 101.

Цикл FOR: синтаксис FOR индекс in [REVERSE] нижняя_граница..верхняя_граница LOOP предложение1; предложение2;... END LOOP; FOR индекс in [REVERSE] нижняя_граница..верхняя_граница LOOP предложение1; предложение2;... END LOOP; Объявление индекса (переменной цикла) не требуется; индекс описывается неявно. Цикл FOR – это быстый способ проверки количества повтора цикла.

Цикл FOR: пример Пример Вывод количества выполнений цикла и последнего значения индекса. Указания Ссылаться на индекс можно только внутри цикла ; вне цикла он не определен. Для ссылки на текущее значение индекса можно использовать выражение. Нельзя ссылаться на индекс в качестве переменной в левой части оператора присваивания.

Цикл WHILE: синтаксис WHILE condition LOOP -- Условие оценивается statement1; -- в начале каждой statement2; -- итерации... END LOOP; WHILE condition LOOP -- Условие оценивается statement1; -- в начале каждой statement2; -- итерации... END LOOP; Цикл WHILE используется для повторения цикла в течение всего времени, пока выполняется условие.

Цикл WHILE: пример... v_ord_id s_item.ord_id%TYPE:=101; v_counter NUMBER(2):=1; BEGIN... WHILE v_counter

Вложенные циклы и метки Возможно несколько уровней вложенных циклов Для различения циклов и блоков используются метки Выход из внешнего цикла осуществляется с помощью оператора EXIT, содержащего ссылку на метку

Вложенные циклы и метки: пример... BEGIN > LOOP v_counter:=v_counter+1; EXIT WHEN v_counter > 10; > LOOP... EXIT Outer_loop WHEN total_done = Yes; -- Leave both loop EXIT WHEN inner_done = Yes; -- Leave inner loop only... END LOOP Inner_loop;... END LOOP Outer_loop; END;... BEGIN > LOOP v_counter:=v_counter+1; EXIT WHEN v_counter > 10; > LOOP... EXIT Outer_loop WHEN total_done = Yes; -- Leave both loop EXIT WHEN inner_done = Yes; -- Leave inner loop only... END LOOP Inner_loop;... END LOOP Outer_loop; END; Выход из внешнего цикла по значениям, вычисленным во внутреннем блоке

Практическое занятие 1.Создайте процедуру SET_COMM, которая устанавливает процент комиссионных для служащего в зависимости от общего объема продаж а) Для подготовке к упражнению отмените действие ограничения для столбца COMISSION_PCT в таблице S_EMP. Проценты комиссионных в упражнении не будут удовлетворять ограничению. > ALTER TABLE s_emp +> DROP CONSTRAINT s_emp_comission_pct_ck; > ALTER TABLE s_emp +> DROP CONSTRAINT s_emp_comission_pct_ck; б) Создайте параметр, чтобы можно было ввести номер служащего. в) Подсчитайте сумму всех заказов, размещенным этим служащим. г) Если эта сумма меньше установите процент комиссионных «10». д) Если сумма находится в диапазоне от до , установите процент комиссионных «15». е) Если в таблице S_ORD нет заказов, размещенных данным служащим, установите процент комиссионных «0».

Практическое занятие 2. Создайте процедуру CUST_UPDATE с циклом для обработки кредитного рейтинга всех заказчиков по регионам. Не фиксируйте изменения а) Если номер региона четный, установите кредитный рейтинг Exellent, даже если он уже был таким; в противном случае установите кредитный рейтинг Good. б) Когда строки будут обновлены, определите количество обновленных строк. В зависимости от того, каким будет это количество, выдайте на экран следующую информацию: Если обновлено менее трех срок, сообщение : Fewer then 3 customer records updated for region number X, где X – номер региона. В противном случае – Y rows updated for region number X, где Y – количество обновленных строк, X – номер региона. в) Отмените изменения. Задайте точку останова на проверке количества обновленных строк.

Практическое занятие 3. Создайте процедуру EMP_MESSAGE, которая выбирает фамилию служащего, дату начала работы и заработную плату по номеру служащего, задаваемому во времени выполнения. Выдайте на экран сообщение по любой комбинации нижеуказанных критериев (используйте вложенные операторы IF) КритерийСообщение Зарплата более 1200 Salary >1200 Фамилия содержит RName contains R Дата начала работы приходится на март March start date Ничего из вышеуказанного**None**