18121

Збережені процедури в Interbase/Firebird

Лекция

Информатика, кибернетика и программирование

Тема 6: Збережені процедури в Interbase/Firebird Збережені процедури Stored procedures – це програми які зберігаються в метаданих бази даних і виконуються на сервері. Прикладні програми можуть викликати stored procedure для виконання заданих в них операцій. Є два види збережених процеду

Украинкский

2013-07-06

52.5 KB

2 чел.


Тема 6: Збережені процедури в Interbase/Firebird

Збережені процедури (Stored procedures) – це програми, які зберігаються в метаданих бази даних і виконуються на сервері. Прикладні програми можуть викликати stored procedure для виконання заданих в них операцій.

Є два види збережених процедур:

1. Select-процедури, які прикладна програма може використовувати замість імен таблиць в команді SELECT. Select-процедура повинна бути написана таким чином, щоб повертати одне або більше значень (вихідних параметрів), або повідомлення про помилку. Оскільки такі процедури можуть повертати більше одного рядка, для викликаючої програми вони видаються таблицями.

2. Executable-процедури, які прикладна програма може прямо викликати за допомогою команди EXECUTE PROCEDURE. Executable-процедури можуть виконувати велике різноманіття задач; вони можуть повертати чи не повертати значення в програму, що їх викликає.

Обидва види процедур створюються за допомогою CREATE PROCEDURE і мають по суті однаковий синтаксис.

Синтаксис stored procedures. Команда CREATE PROCEDURE складається з заголовка та тіла. В заголовку повинні бути:

  •  Ім’я процедури, яке повинно бути унікальним серед імен процедур, таблиць і представлень (view) в базі даних.
  •  Необов’язковий список вхідних параметрів, які процедура одержує при виклику, і їх типів.
  •  Якщо процедура повертає значення, ключове слово RETURNS зі списком вихідних параметрів і їх типів після нього.

Тіло процедури вміщує:

  •  Необов’язковий опис локальних змінних.
  •  Програму на мові трігерів і процедур Interbase між BEGIN та END. Тут можуть бути вкладені блоки (BEGINEND) з будь-яким рівнем вкладеності.

Спрощений синтаксис команди:

CREATE PROCEDURE procedure_name

 [( input_var1 datatype[ , input_var2 datatype …])]

 [RETURNS ( output_var1 datatype[, output_var2 datatype …])]

AS

BEGIN

 оператори мови трігерів і процедур InterBase

END

Простий приклад:

CREATE PROCEDURE get_emp_proj (v_empno SMALLINT)

 RETURNS (project_id CHAR(5))

AS

BEGIN

 FOR SELECT proj_id

   FROM Employee_project

   WHERE emp_no = :v_ empno

   INTO :project_id

 DO

   SUSPEND;

END

Це select-процедура, яка повертає коди проектів, в яких бере участь працівник, код якого переданий як параметр. Зверніть увагу, що в тілі процедури звертання до змінних (наприклад, параметрів) здійснюється з указанням двокрапки, наприклад, :v_ empno чи :project_id.

Оператор FOR SELECT ... DO повертає набір даних, вибраний з бази, як звичайний select, але повертає їх по одному за раз в змінні, вказані після INTO і потім виконує оператори, вказані після DO. В даному випадку єдиним оператором є SUSPEND, який посилає значення вихідних змінних в програму, що викликає stored procedure (фактично, повертає один рядок).

Дану процедуру після створення можна викликати:

SELECT * FROM get_emp_proj(71)

Дужки вказують, що після from стоїть не ім’я таблиці, а ім’я процедури.

В наступному прикладі виводяться не лише коди проектів, а і номери рядків.

CREATE PROCEDURE get_emp_proj2 (v_empno SMALLINT)

 RETURNS (line_no integer, project_id CHAR(5))

AS

BEGIN

 line_no = 0;

 FOR SELECT proj_id

   FROM Employee_project

   WHERE emp_no = :v_ empno

   INTO :project_id

 DO

 BEGIN

   line_no = line_no+1;

   SUSPEND;

 END

END

Наведемо тепер приклад executable-процедури.

CREATE PROCEDURE add_emp_proj (v_empno SMALLINT, v_projid CHAR(5))

AS

BEGIN

 INSERT INTO Employee_project (emp_no, proj_id)

   VALUES (:v_empno, :v_projid);

 WHEN SQLCODE -530 DO

   EXCEPTION UNKNOWN_EMP_ID;

END

(В даному випадку UNKNOWN_EMP_ID – виключна ситуація Interbase, створена командою

CREATE EXCEPTION unknown_emp_id 'Invalid employee number or project ID.')

Після створення дану процедуру можна виконати, наприклад, за допомогою команди

EXECUTE PROCEDURE add_emp_proj(20, ’DGPII’)

Всередині процедур можна використовувати наступні команди:

BEGIN … END

Визначає блок операторів, що виконуються, як один;; BEGIN починає блок, END закінчує. Ніколи крапка є комою не ставиться після END.

змінна = вираз

Оператор присвоєння значення – присвоює змінній значення виразу (локальній змінній, вхідному або вихідному параметру)

/* коментар */

Коментар може складатися з багатьох рядків

EXCEPTION

ім’я виключної ситуації

Генерує іменовану виключну ситуацію – визначену користувачем помилку, яка може бути оброблена в пункті WHEN

EXECUTE PROCEDURE

proc_name [var [, var …]]

[RETURNING_VALUES

var [, var …]]

Виконує stored procedure з вхідними параметрами, що стоять після ім’я процедури і значеннями, що повертаються після RETURNING_VALUES.

Забезпечує можливість використання вкладених процедур і рекурсії.

EXIT

Переходить на завершальний END в процедурі

FOR select-команда DO

складний оператор

Повторює оператор, що стоїть після DO для кожного рядка, одержаного через select-команду.

select-команда - звичайний SELECT, за винятком того, що повинна бути частина INTO в кінці

складний оператор

Один або декілька операторів на мові трігерів і процедур, взятий в операторні дужки BEGIN  END

IF (умова)

THEN складний оператор

[ELSE складний оператор]

Умова – Boolean-вираз, як правило умова

POST_EVENT ім’я події

Генерує подію, задану ім’ям

SUSPEND

В SELECT-процедурі:

Призупиняє виконання процедури, поки викликаюча програма не зробить вибірку даних (FETCH). Повертає в викликаючу програму вихідні значення, якщо вони є. Не рекомендується для executable процедур.

WHILE (умова)

DO складний оператор

Поки умова TRUE, продовжує виконання оператора.

WHEN

{error [, error …] | ANY}

DO складний оператор

Оператор обробки помилок. Коли одна з указаних помилок виникає, виконується складний оператор. WHEN повинен бути в кінці блоку, зразу перед END.


 

А также другие работы, которые могут Вас заинтересовать

33642. Защита периметра компьютерных сетей 48 KB
  В межсетевых экранах применяются специальные характерные только для данного вида средств методы защиты. Основные из них: трансляция адресов для сокрытия структуры и адресации внутренней сети; фильтрация проходящего трафика; управление списками доступа на маршрутизаторах; дополнительная идентификация и аутентификация пользователей стандартных служб на проходе; ревизия содержимого вложений информационных пакетов выявление и нейтрализация компьютерных вирусов; виртуальные частные сети для защиты потоков данных передаваемых по...
33643. Сетевые анализаторы и снифферы 63 KB
  Главный недостаток технологии Ethernet незащищенность передаваемой информации Метод доступа положенный в основу этой технологии требует от узлов подключенных к сети непрерывного прослушивания всего трафика. Узлы такой сети могут перехватывать информацию адресованную своим соседям. В общем смысле слово сниффер обозначает устройство подключенное к компьютерной сети и записывающее весь ее трафик подобно телефонным жучкам записывающим телефонные разговоры. В то же время сниффером программа запущенная на подключенном к сети узле и...
33644. Защита на канальном уровне 549.5 KB
  Технология создания защищенного виртуального канала по протоколу PPTP предусматривает как аутентификацию удаленного пользователя так и зашифрованную передачу данных. Программное обеспечение удаленного доступа реализующее PPTP может использовать любой стандарт криптографического закрытия передаваемых данных. Например сервер удаленного доступа Windows использует стандарт RC4 и в зависимости от версии 40 или 128разрядные сеансовые ключи которые генерируются на основе пароля пользователя. В протоколе PPTP определено три схемы его...
33645. ПРОТОКОЛЫ РАЗРЕШЕНИЯ АДРЕСОВ ARP 35.5 KB
  ПРОТОКОЛЫ РАЗРЕШЕНИЯ АДРЕСОВ RP. Для доставки дейтаграммы в локальной сети нужно определить физический адрес узла назначения. Именно для этого существует процедура автоматического определения физических адресов. Протокол разрешения адресов ddress Resolution Protocol RP обеспечивает метод динамической трансляции между IPадресом и соответствующим физическим адресом на основе широковещательных рассылок.
33646. Атаки на протокол ARP 38 KB
  Атаки на протокол RP Протокол разрешения адресов – RP. Функционально протокол RP состоит из двух частей. Одна часть протокола определяет физические адреса другая отвечает на запросы при определении физических адресов. Протокол RP работает различным образом в зависимости от того какой протокол канального уровня работает в данной сети протокол локальной сети Ethernet Token Ring FDDI с возможностью широковещательного доступа одновременно ко всем узлам сети или же протокол глобальной сети Х.
33647. ПРОТОКОЛ ICMP. ФОРМАТЫ СООБЩЕНИЙ ICMP 35 KB
  Если маршрутизатор обнаруживает ошибку он уничтожает дейтаграмму но одновременно с помощью ICMP отсылает сообщение об ошибке отправителю для принятия мер по ее устранению. 8бит – тип сообщение 8 бит – поле кода конкретизирует назначение сообщения 16 бит – контрольная сумма. Сообщение Получатель недостижим посылается маршрутизатором если он не может доставить IPдейтаграмму по назначению. В это сообщение включается IPзаголовок отвергнутой IPдейтаграммы и ее первые 64 бита.
33648. Атаки сетевого уровня на протокол IP и его защита 119 KB
  В качестве примера можно привести известную утилиту Nmp некоторые режимы которой позволяют задать поддельные адреса отправителя пакетов. Посылка специфических пакетов где определённым образом заполнены поля заголовка отвечающие за фрагментацию может приводить к зависанию или понижению производительности узла. Исправление этих ошибок – это установка пакетов обновления программного обеспечения. Большое число одинаковых фрагментированных пакетов вызывают замораживание машины на время атаки.
33649. Атаки на протокол ICMP и его защита 27.5 KB
  Атаки на протокол ICMP и его защита Поскольку протокол ICMP служит для передачи различных управляющих служебных сообщений поэтому всегда был популярной мишенью для атаки. Атака Sping Jolt Атака состоит в посылке нескольких дефрагментированных пакетов ICMP IСМР_ЕСНО больших размеров по частям. Для устранения уязвимости необходимо применить патч icmpfix который зависит от версии Windows NT и установленного пакета обновления. Атака ICMP Request Атака заключается в посылке пакета ICMP Subnet Msk ddress Request по адресу сетевого интерфейса...
33650. Протокол IPSec 43.5 KB
  Протокол IPSec Шифрование данных на сетевом уровне представлено группой протоколов IPSec основанных на современных технологиях электронной цифровой подписи и шифрования данных. Протокол IPSec включает в себя: протокол аутентификации uthentiction Heder АН который привязывает данные в составе пакета к своеобразной подписи позволяющей удостовериться как в подлинности отправителя так и в целостности принятых от него данных; протокол Encpsulted Security Pylod ESP отвечающий за шифрование содержимого отдельных пакетов и даже...