PL/SQL Взаимодействие с СУБД
Специальные типы Имя_таблицы.имя_столбца%TYPE Имя_таблицы%ROWTYPE; Имя_курсора%ROWTYPE;
Специальные типы DECLARE persons_row persons%ROWTYPE; persons_name persons.name%TYPE; BEGIN … END
Использование операторов SQL SELECT INSERT UPDATE DELETE
Получение данных из таблиц SELECT [{DISTINCT | ALL}] {* | select_item [, select_item]...} INTO {variable_name [, variable_name]...| record_name} FROM …
Получение данных из таблиц Пример: select * into persons_row from persons where id = 1; Важно: в результате выполнения SELECT должна быть одна строка
DELETE, INSERT, UPDATE Получение данных обработанных строк (удаленных, вставленных, измененных) посредством RETURNING … INTO … Пример: UPDATE persons SET name = 'new name' WHERE id = 1 RETURNING name INTO person_name;
Задания Создать таблицы: Persons (id, name, birthday, organization_id) Organizations (id, name, amount_of_sales) amount_of_sales – число – текущее значение суммарных продаж организации Salary (person_id, organization_id, salary) Заполнить произвольным образом таблицу организаций (несколько строк). При помощи SELECT … INTO вывести информацию о дате рождения персоны по заданному id в виде: Birthdate of –
Задания При помощи SELECT … INTO вывести информацию об организации персоны по заданному id в виде: Organization of –
Задания По заданному id персоны увеличить зарплату на 15%. Если персона устроена в несколько организаций, увеличить зарплату лишь в той организации, у который меньше остальных сумма продаж.
Задания Добавить новую персону и установить ей зарплату в 10% от текущего значения суммарных продаж той организации, в которую устраивается человек. Для получения данных добавленной строки использовать RETURNING … INTO
Задания Создать таблицу: Deleted_persons(id, name, bithday, organization_id, delete_date) По заданному id удалить персону и добавить информацию об удалении строчки в таблицу Deleted_persons (используя RETURNING … INTO …)