Оператор IF–ELSIF–ELSE в программе PL/SQL вычисляет некоторое логическое условие и, когда это условие истинно (TRUE), выполняет один или несколько операторов. В примере псевдопрограммы, приведенной ниже, показано использование команды IF–ELSIF–ELSE.
if условие then
оператор 1;
оператор 2;
…
elsif (не elseif)
оператор 3;
оператор 4;
…
else
оператор 5;
оператор 6;
…
end if;
Для повторения выполнения группы операторов в PL/SQL-программах можно применять циклы. В примерах псевдопрограмм, приведенных ниже, продемонстрировано использование базовых циклов, циклов WHILE и FOR.
-- БАЗОВЫЙ ЦИКЛ (LOOP) С ИСПОЛЬЗОВАНИЕМ EXIT – WHEN
loop
оператор 1;
оператор 2;
exit when условие;
end loop;
-- ЦИКЛ WHILE
while условие loop
оператор 1;
оператор 2;
end loop;
-- ЦИКЛ FOR С ВЛОЖЕННЫМИ ЦИКЛОМ И МЕТКАМИ
« внешний_цикл » – метка или имя цикла
for x in у.. z loop
внешний_оператор1;
« внутренний_цикл »
loop
внутренний_оператор1;
внутренний_оператор2;
exit внешний_цикл when условие1;
exit внутренний_цикл when условие2;
end loop внутренний_цикл;
внешний_оператор2;
end loop внешний_цикл;
Для завершения каждого базового цикла необходимо использовать при его определении либо оператор EXIT WHEN, либо оператор EXIT; в противном случае цикл будет выполняться бесконечно. При определении цикла WHILE или FOR требуется описывать способ завершения этого цикла. В третьем примере показано, как организовывать вложение циклов, применять для именования циклов специальные метки и ссылаться на определенные циклы по имени в операторах EXIT и END LOOP.
Основное назначение языка PL/SQL – создание программ для работы с базами данных. Программа PL/SQL может взаимодействовать с базами данных только посредством SQL. В последующих параграфах показано, как с помощью программ PL/SQL управлять информацией, содержащейся в базах данных, используя SQL – операторы DML, курсоры и динамический SQL. (Вопросы, связанные с динамическим SQL, будут рассматриваться отдельно при рассмотрении модуля-утилиты DBMS_SQL.)
Всё множество инструкций SQL условно разделяют на два подмножества: DML (Data Manipulation Language) и DDL (Data Definition Language). Подмножество DML включает в себя все инструкции по управлению данными в базе (SELECT, INSERT, DELETE, UPDATE). Подмножество DDL включает в себя все инструкции по созданию объектов баз данных (CREATE), таких как таблицы, представления, индексы, синонимы и др., а также инструкции, изменяющие определение таблиц (ALTER TABLE), управляющие привилегиями пользователей (GRANT) и удаляющие объекты баз данных (DROP).
Любой из SQL – операторов DML можно использовать в программах для модифицирования базы данных ORACLE. Например, в процедуре UPDATE_PART_UNITPRICE, описанной в начале этого раздела, для модификации записи в таблице PARTS применяется простой оператор UPDATE. Для внесения изменений в строки таблиц баз данных программы PL/SQL могут включать любые корректные операторы INSERT, UPDATE или DELETE.
В программах PL/SQL для задания переменной некоторого значения или набора значений часто применяются операторы присваивания. Для этого можно использовать команду SELECT INTO. Например:
declare
current_part parts %rowtype;
begin
select * into current_part
from parts
where id=6;
Если в результирующем множестве оператора SELECT INTO содержится более одной строки, ORACLE возвращает сообщение об ошибке. Для обработки запроса, возвращающего более одной строки, в программе необходимо использовать курсор.