Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Хранимые процедуры могут быть вызваны из приложений с использованием динамических операторов SQL. Они также могут быть вызваны интерактивно из isql и из многих других инструментов работы с базами данных, рекомендованных для использования с Firebird. Исполняемые модули, включая вложенные процедуры, могут быть использованы в скриптах с тем ограничением, что все входные параметры являются константами и не существует выходных наборов. В скриптах не существует возможности передавать переменные параметры.

<p>Выполняемые хранимые процедуры</p>

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

<p>Хранимые процедуры выбора</p>

Хранимые процедуры выбора названы так, потому что они написаны с использованием некоторых специальных расширений языка для создания многострочных выходных наборов, возвращающихся вызвавшей программе, которая использовала запрос SELECT - "виртуальные таблицы".

Сервер не различает процедуры выбора и выполняемые процедуры. Если требуется, он попытается выбрать набор записей из выполняемой процедуры или выполнить что-нибудь в процедуре выбора- и, естественно, будет вызывать исключение, если возникнут ошибки в запросе! Это ваша задача убедиться, что ваш код на сервере делает именно то, что вы от него ожидали, и что код приложения посылает соответствующие запросы.

<p>Создание хранимых процедур</p>

В вашем скрипте или в isql начните с установки символа терминатора, который будет использован для отметки конца синтаксиса CREATE PROCEDURE. Следующий пример устанавливает символ терминатора в &:

SET TERM &;

Синтаксис оператора:

CREATE PROCEDURE имя-процедуры

[(аргумент тип-данных [, аргумент тип-данных [...]])]

[RETURNS (аргумент тип-данных [, аргумент тип-данных [...]])

AS

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

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

[DECLARE [VARIABLE] переменная тип-данных;

[...]]]

BEGIN

<составной-оператор>;

END <терминатор>

<p>Элементы заголовка</p>

Объявляйте в заголовке:

* имя процедуры, которое обязательно и должно быть уникальным в базе данных, например:

CREATE PROCEDURE MyProc

* любые необязательные входные параметры (аргументы), требуемые в процедуре, с их типами данных. Список заключается в скобки, параметры отделяются друг от друга запятыми, например:

CREATE PROCEDURE MyProc (invarl integer, invar2 date)

* имя каждого аргумента должно быть уникальным в процедуре. Тип данных может быть любым стандартным типом данных SQL за исключением массива типов

данных. Не требуется соответствия имен входных аргументов именам параметров в вызывающей программе;

* любые необязательные выходные параметры (аргументы), требуемые в процедуре, с их типами данных. Список следует за ключевым словом RETURNS. список заключается в скобки, параметры отделяются друг от друга запятыми, например:

CREATE PROCEDURE MyProc

(invar1 INTEGER, invar2 DATE)

RETURNS (outvar1 INTEGER, outvar2 VARCHAR(20), outvar3 DOUBLE PRECISION)

* имя каждого аргумента должно быть уникальным в процедуре. Тип данных может быть любым стандартным типом данных SQL за исключением массива типов данных;

* ключевое слово AS, которое обязательно:

CREATE PROCEDURE MyProc

(invar1INTEGER, invar2 DATE)

RETURNS(outvar1 INTEGER, outvar2 VARCFAR(20), outvar3 DOUBLE

PRECISION)

AS

<p>Элементы тела</p>

Синтаксис:

< тело-процедуры> = [<список-объявлений-переменных>] <составной-оператор>

Локальные переменные

Если вам нужно объявить локальные переменные, то это следует сделать далее. Каждое объявление завершается точкой с запятой. В версии 1.5 переменные при их объявлении могут инициализироваться. Синтаксис:

<список-объявлений-переменных> =

DECLARE [VARIABLE] переменная тип-данных [{'=' | DEFAULT} значение];

[DECLARE [VARIABLE] переменная тип-данных; . . .]

Пример:

CREATE PROCEDURE MyProc (

invar1 INTEGER,

invar2 DATE)

RETURNS (

outvar1 INTEGER,

outvar2 VARCHAR(20),

outvar3 DOUBLE PRECISION)

AS

DECLARE VARIABLE localvar integer DEFAULT 0;

DECLARE VARIABLE anothervar DOUBLE PRECISION = 0.00;

! ! !

ПРИМЕЧАНИЕ. Ключевое слово VARIABLE необязательно в версии 1.5 и выше.

. ! .

Главный блок кода

Следом идет главный блок кода, обозначенный в описании синтаксиса как <составной-оператор>. Он начинается ключевым словом BEGIN и заканчивается ключевым словом END.

Синтаксис:

<составной-оператор> =

BEGIN

<составной-оператор>

[<составной-оператор> ...]

END <терминатор>

Все структуры <составной-оператор> состоят из одного оператора и/или других структур <составной-оператор>, которые могут включать другие вложенные структуры, например:

CREATE PROCEDURE MyProc (

invar1 INTEGER,

invar2 DATE)

RETURNS (

outvar1 INTEGER,

outvar2 VARCHAR(20),

outvar3 DOUBLE PRECISION)

AS

DECLARE VARIABLE localvar integer DEFAULT 0;

DECLARE VARIABLE anothervar DOUBLE PRECISION = 0.00;

BEGIN

< составной-оператор>

END &

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных