Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Алгоритмический язык хранимых процедур

CREATE PROCEDURE ИмяПроцедуры

Создание хранимой процедуры.

 

Хранимая процедура создается оператором

 

[(входной_параметр тип_данных [, входной_параметр тип_данных... ])]

[RETURNS

(выходной_параметр тип_данных [, выходной_параметр тип_данных...])] AS

<тело процедуры>;

 

Входные параметры служат для передачи в процедуру значений из вызывающего приложения. Изменять значения входных параметров в теле процедуры бессмысленно: эти изменения будут забыты после окончания работы процедуры.

Выходные параметры служат для возврата результирующих значений. Значения выходных параметров устанавливаются в теле процедуры и после окончания ее работы передаются в вызывающее приложение.

И входные, и выходные параметры могут быть опущены, если в них нет необходимости.

Тело процедуры имеет формат

 

[<объявление локальных переменных процедуры>]

BEGIN

< оператор>

[<оператор>...]

END

 

Пример. Хранимая процедура FIND_AUTHOR_NAME возвращает в выходном параметре IN_AUTHOR_NAME имя автора по его коду – IN_AUTHOR_CODE:

 

CREATE PROCEDURE FindAuthorName

(InAuthorCode INTEGER)

RETURNS(InAuthorName CHAR(30))

AS

BEGIN

SELECT Name

FROM BookAuthors

WHERE Code =: InAuthorCode

INTO: InAuthorName;

SUSPEND;

END

 

Заметим, что в приведенной процедуре за ненадобностью отсутствует определение локальных переменных. С оператором SELECT мы познакомимся позднее.

 

 

Для написания тела хранимой процедуры применяют особый алгоритмический язык. Помимо хранимых процедур, данный язык применяется также для написания триггеров, с которыми мы познакомимся чуть позже.

Рассмотрим конструкции алгоритмического языка хранимых процедур и триггеров.

 

Объявление локальных переменных. Локальные переменные, если они определены в процедуре, имеют срок жизни от начала выполнения процедуры и до ее окончания. Вне процедуры такие локальные переменные неизвестны и попытка обращения к ним вызовет ошибку. Локальные переменные используют для хранения промежуточных значений.

Формат объявления локальных переменных:

 

DECLARE VARIABLE <имя переменной > <тип данных>;

 

В качестве типа данных могут использоваться типы данных, стандартно определенные в InterBase.

 

Оператор присваивания. Оператор присваивания служит для занесения значений в переменные. Его формат:

 

Имя переменной = выражение;

 

где в качестве выражения могут выступать переменные, арифметические и строковые выражения, в которых можно использовать встроенные функции, функции, определенные пользователем, а также генераторы. Пример:

 

РОК = "Покупатель не указан";

 

Операторные скобки BEGIN... END. Операторные скобки BEGIN... END, во-первых, ограничивают тело процедуры, а во-вторых, могут использоваться для указания границ составного оператора.

Под простым оператором понимается единичное разрешенное действие, например:

 

РОК = "Покупатель не указан";

Под составным оператором понимается группа простых или составных операторов, заключенная в операторные скобки BEGIN... END.

 

Оператор IF... THEN... ELSE. Условный оператор IF... THEN... ELSE имеет формат

 

IF (<условие>) THEN

<оператор 1>

[ELSE

<оператор 2>]

 

В случае, если условие истинно, выполняется оператор 1, если ложно - оператор 2.

 

Оператор SELECT. Оператор SELECT используется в хранимой процедуре для выдачи единичной сроки. По сравнению с синтаксисом обычного оператора SELECT, в процедурный оператор добавлено предложение

INTO переменная [, переменная...]

 

Оно служит для указания переменных или выходных параметров, в которые должны быть записаны значения, возвращаемые оператором SELECT (те результирующие значения, которые перечисляются после ключевого слова SELECT).

 

Оператор FOR SELECT... DO. Оператор FOR SELECT... DO имеет следующий формат:

 

<== предыдущая лекция | следующая лекция ==>
Понятие хранимой процедуры | Ограничения на уровне домена
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 504; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.