- •Основы языка pl/sql
- •Основные синтаксические конструкции языка pl/sql
- •V_ename emp.Ename%type;
- •V_sal number;
- •Курсоры pl/sql
- •V_ename emp.Ename%type;
- •V_sal emp.Sal%type;
- •If sql%notfoundthen
- •Insert into tb_error_log(id,date)
- •Values (user_id, sysdate);
- •V_account_no number;
- •V_balance number;
- •I.Until_price,
- •I.Quantity
- •Управление ходом выполнения кода pl/sql
- •If условие then операторы;
- •V_ename emp.Ename%type;
- •V_sal emp.Sal%type;
- •If c_emp%found then
- •Обработка ошибок (исключений - exception)
- •V_oraerr number;
- •V_oraerrm varchar2(255);
- •V_sal number;
Основы языка pl/sql
Сервер с БД
Вызов SQL
Строки данных
Вызов SQL
Строки данных
Система клиент-сервер, в которой используется язык SQL.
SQL-вызов
Сервер с БД и хранимыми процедурами
PL/SQL
Значение
Система клиент-сервер, с применением серверного кода PL/SQL
PL/SQLиспользуется для создания, хранимых процедур, функций, пакетов и триггеров. Триггеры должны хранится на сервере (вместе с БД), а процедуры и функции могут находиться и на сервере и на клиенте.
Хранимая процедура- это программный модуль, выполняющий определенную обработку данных и возвращающий код, который позволяет определить, была ли процедура выполнена успешно. Например, хранимая процедура позволяет обработать группу строк с учетом заданного значения, а затем применить операторыDMLк другой таблице в соответствии с результатом обработки этой группы строк.
Функция- это разновидность процедуры, которая отличается тем, что она возвращает в вызывающий оператор значение, например, результат вычисления. Процедуры и функции представляют собой превосходный способ выполнения сложных вычислений или обработки, которую было бы нелегко осуществить с применением только операторовSQL.
Пакеты- это программные конструкции, позволяющие объединять взаимосвязанные процедуры и функции, или процедуры и функции, которые часто применяются в приложениях определенного типа. При ссылке на любую процедуру или функцию пакета в память загружаются все процедуры и функции этого пакета.
Триггерыназначаются таблицам и предоставляют возможность применять дополнительные функциональные средства либо до, либо после выполнения операторов DML. Триггеры позволяют вести контрольные журналы для указанных таблиц, применять к другим таблицам дополнительные операторы DML на основе результатов только что выполненного оператора DML и т.д.
Основные синтаксические конструкции языка pl/sql
В принципе базовый блок PL/SQLсостоит из четырех секций
Секция заголовка (header section)
Секция объявлений (declaration section)
Выполняемая секция (execution section)
Секция исключений (exceptionsection)
Основной формат процедуры примерно такой:
Заголовок |
Procedure имя_процедуры [(параметр_1 [IN/OUT] [тип_параметра [DEFAULT значение по умолчанию]][,…])] |
Объявления |
IS / DECLARE Переменная_1 её_тип; Переменная_2 её_тип; . . . . . . . . . . . |
Выполняемая секция |
BEGIN операторы |
Секция исключений |
EXCEPTIONS WHEN имя_исключения THEN . . . . . . . . . . . |
Признак конца |
END |
Переменные PL/SQL
имя_переменной [CONSTANT]тип_данных[NOT NULL]
[{:= | DEFAULT} var/calc/expression]
Общепринятые соглашения об именованиях переменных PL/SQL
Префикс |
Тип |
Пример |
v_ |
Стандартная переменная |
v_empno |
c_ |
Константа |
c_sysdate |
p_ |
Переменная SQL*Plus |
p_infield |
g_ |
Глобальная переменная SQL*Plus |
g_field_pos |
Тип данных может быть %TYPE, %ROWTYPE, NUMBER, DATE, либо текстовый, кроме того здесь допустимы ANSI-типы данных - DEC(p,s), DECIMAL(p,s), INT, INTEGER, REAL, FLOAT(p), DOUBLE PRECISION.
Пример
Procedure TEST
IS
emp_record emp%ROWTYPE;