|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Функциональные возможности программКак видно из предыдущих примеров, оператор присваивания в PL/SQL обозначается символом ‘:=’.
Управление выполнением программ Как и во всех языках программирования, в PL/SQL существуют операторы управления вычислительным процессом, такие как операторы условного управления, итерационного и последовательного управления. Условное управление осуществляется посредством оператора if-elsif-else: if условие then оператор 1; оператор 2; … elsif (не elseif) оператор 3; оператор 4; … else оператор 5; оператор 6; … end if;
Для итерационного управления ходом вычислений можно применять три вида циклов: цикл с постусловием exit when loop оператор 1; оператор 2; exit when условие; end loop;
цикл с предусловием while while условие loop оператор 1; оператор 2; end loop;
цикл с предусловием for <<внешний цикл>> ─ метка или имя цикла for x in y..z loop внешний оператор 1; <<внутренний цикл>> loop внутренний оператор 1; внутренний оператор 2; exit внешний цикл when условие1; exit внутренний цикл when условие2; end loop внутренний цикл; внешний оператор 2; … end loop; Взаимодействие с базами данных. Основное назначение языка PL/SQL ─ создание программ для работы с базами данных. Программа может взаимодействовать с базами данных только посредством SQL. Программы PL/SQL могут управлять информацией, содержащейся в базе данных, используя SQL-операторы DML, курсоры и динамический SQL. О динамическом SQL речь будет вестись в теоретическом описании к следующей лабораторной. Здесь же остановимся на стандартном DML и работе с курсорами.
Стандартный DML. Для внесения изменений в строки таблицы базы данных программы PL/SQL могут включать любые корректные операторы insert, update или delete. Для задания переменной некоторого значения или набора значений можно использовать команду select into. Например:
declare current_part parts %rowtype; begin select * into current_part from parts where id=6;
Работа с курсорами. Для работы со строками, извлекаемыми из результирующего множества “многострочного” запроса посредством курсора необходимо выполнить три операции: открыть курсор посредством команды open, считать информацию в ранее объявленные переменные посредством fetch и закрыть курсор посредством close. Например:
declare cursor parts_cur is select * from parts; current_part parts %rowtype; begin open parts_cur; loop fetch parts_cur into current_part; …другие операторы… end loop; close part_cur; … Для упрощения необходимых при установке и обработке курсоров можно пользоваться курсорными циклами for:
declare cursor parts_cur is select * from parts; begin for current_part in parts_cur loop …другие операторы… end loop;
В курсорном цикле for автоматически объявляется переменная или запись, с помощью которой можно считывать записи, открывать курсор, выбирать из него строки и закрывать курсор когда из него выбирается последняя строка. В программах PL/SQL можно использовать несколько уникальных курсорных атрибутов ─ %isopen, %found, %notfound, %rowcount ─ для принятия решения во время обработки курсоров: %isopen – при употреблении с курсором в условии возвращает TRUE, если курсор был предварительно открыт. %rowcount – возвращает число строк в курсоре после его открытия. %found – возвращает FALSE после того как из курсора была вычитана последняя строка. %notfound – принимает значение TRUE после того как из курсора вычитана последняя строка. Пример использования можно продемонстрировать следующим фрагментом “псевдокода”: … while parts_cur %found loop fetch parts_cur into current_part; …другие операторы… end loop;
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |