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.


 

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

85301. Виды и жанры народной художественной культуры 38.75 KB
  Основной признак сказки фантастический элт который очевиден для рассказчика и слушателя в равной мере. Все сказки делятся на виды группы категории или жанры: А волшебные б кумулятивные в о животных растениях. Волшебные сказки называются так условно и выделяются в отдельный ряд по композиционным структурным признакам. Сказки о животных растениях предметах тоже составляют особую группу.
85302. Актуальные задачи сохранения и развития традиций народной художественной культуры 34.69 KB
  Программа этнохудожественного образования подрастающего поколения Определенную роль в системе возрождения народных традиций играют нучные исследования в сфере НХК которые проводятся на базе: НИИ Искусствознания НИИ Культурологии Этнологии; Российский институт культурного и природного наследия; Государственный Российский дом НХТ Государственный республиканкий центр русского фольклора С их помощью создается целостная многоуровневая система выявления и учета фольклорных процессов. С целью развития традиций НХК систематически проводятся:...
85303. Философские основы сущности и структуры народного художественного сознания 41.29 KB
  В Древней Греции впервые в истории появляется мысль о том что вся совокупность наших знаний может быть упорядочена что из всего огромного разнообразия знаний и сведений можно выделить знания наиболее общего характера наиболее важные достоверные и очевидные ldquo;началаrdquo; ldquo;принципыrdquo; ldquo;аксиомыrdquo; из которых затем можно последовательно шаг за шагом вывести и прочно обосновать все остальные знания так что каждое из них займет своё место в единой системе в упорядоченном и обозримом целом. Согласно же Платону...
85304. Народная художественная культура как основа современного мирового культурного пространства 55.64 KB
  А что знает об этом современный житель России Какими представляет он себе своих предков какой видит культуру России прошлых веков и тысячелетийС уходом XX века и наступлением следующего столетия ученые вновь заговорили о кризисе и даже исчезновении культуры. Проблема состояния культуры соотношения ее структурных элементов выделения ее лидирующих компонентов приобретает особое значение в глобализирующемся мире где превалирует массовая культура постиндустриального общества. В настоящее время актуальным становится практическое решение...
85305. Образы древней мифологии 40.97 KB
  Греки довольно рано перешли к антропоморфизму создав своих богов по образу и подобию людей при этом наделив их непременными и непреходящими качествами красотой умением принимать любой образ и самое главное бессмертием. Человеческая жизнь неизбежно кончалась смертью боги же были бессмертны и не знали границ в выполнении своих желаний но все равно выше богов была судьба Мойры предопределение изменить которое не мог никто из них. Таким образом греки даже в участи бессмертных богов усматривали их сходство с судьбами...
85306. Основные мифологические циклы: классификация 36.49 KB
  К древнейшим и самым примитивным мифов принадлежали мифы о животных (или зооморфные) и зооантропоморфных мифы. Элементарные из них представляют собой наивное объяснение отдельных признаков животных. Глубоко архаические мифы - о происхождении животных от людей или мифологические представления о том, что люди были когда-то животными.
85307. Системы исходных понятий народной художественной культуры 37.16 KB
  Основными понятиями являются культура ценности традиция этническая культура. Ценности первым кто ввел это понятие в научный оборот был польский психолог В. Для большинства исследователей понятие ценности сродни понятию установка. Клакхон ценностиэто осознанное или неосознанное характерное для индивида или группы индивидов представления о желаемом которое определяет выбор целей с учетом возможных последствий.
85308. Календарные праздники и обряды: структура, функции, художественные элементы 35.95 KB
  Основные зимние праздники приходились на январь. Дети девушки и парни под Рождество ходили по домам колядовать Колядовали и в Новый год. Молодежь наряжалась стариками и старухами цыганами гусарами; мазали лица сажей надевали вывороченные наизнанку шубы и ходили по деревне подшучивая над всеми разыгрывая сценки веселясь. Ходили друг к другу в гости обильно угощались блинами оладьями пирогами была и выпивка.
85309. Календарные праздники и обряды на Руси; их связь с зимним и летним солнцеворотами; весенним и осенним равноденствием; с циклами сельскохозяйственных работ; с языческими и христианскими основами веры 35 KB
  Важнейшие на Руси языческие обряды и праздники были слиты с земледельческим трудом с жизнью природы а значит с мифологическими олицетворениями природных сил. Первыми еще в глубокой древности возникли праздники связанные с земледельческим календарем предков восточных славян. Начинаясь в декабре когда солнце поворачивается на лето предвещая скорое пробуждение кормилицы материземли от зимнего сна и заканчиваясь осенью с завершением уборки урожая праздники составляли целостный календарный цикл.