Функции interbase


Содержание

Справочник по инструкциям и функциям. InterBase SQL

CREATE PROCEDURE

Описание

CREATE PROCEDURE определяет новую сохраненную процедуру в базе данных. Сохраненная процедура это отдельная программа, написанная на языке процедур и триггеров InterBase, и сохраненная как часть метаданных базы данных. Сохраненные процедуры могут принимать входные параметры из и возвращать значения в приложение.

Язык процедур и триггеров InterBase включает все инструкции SQL манипулирования данными и некоторые мощные улучшения, включающие: IF . THEN . ELSE, WHILE . DO, FOR SELECT . DO, исключительные ситуации и обработку ошибок.

Имеются два вида процедур:

  • Процедуры выбора, которые приложения могут использовать вместо таблиц или видов в инструкции SELECT. Процедура выбора должна быть определена для возвращения одного или более значений, иначе результатом выполнения процедуры будет ошибка.
  • Выполняемые процедуры, которые приложения могут непосредственно вызывать в инструкции EXECUTE PROCEDURE. Выполняемая процедура не требует возвращать значения вызываемой программе.

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

Заголовок процедуры содержит:

  • Имя сохраненной процедуры, которое должно быть уникальным среди имен процедур и таблиц в базе данных.
  • Факультативный список входных параметров и их типов данных, которые процедура принимает из вызывающей программы.
  • Следующий за ключевым словом RETURNS список выходных параметров и их типов данных, если процедура возвращает значения в вызывающую программу.

Тело процедуры содержит:

  • Факультативный список локальных переменных и их типов данных.
  • Блок инструкций на языке процедур и триггеров InterBase, ограниченный BEGIN и END. Блок может включать в себе другие блоки, так, чтобы имелось несколько уровней вложения.

Важно: Так как каждая инструкция в теле сохраненной процедуры должна завершатся точкой с запятой, вы должны определить другой символ для завершения инструкции CREATE PROCEDURE в ISQL. Используйте SET TERM пред CREATE PROCEDURE чтобы определить терминатор отличный от точки с запятой. После инструкции CREATE PROCEDURE, включите SET TERM, что бы изменить терминатор обратно к точке с запятой.

InterBase не позволяет изменения базы данных, которые воздействуют на поведение существующих процедур (т.к. DROP TABLE, DROP EXCEPTION). Для просмотра, всех процедур определенных для текущей базы данных или текста и параметров именованной процедуры, используйте внутренние команды ISQL, SHOW PROCEDURES или SHOW PROCEDURES procedure .

Язык процедур и триггеров InterBase это полный язык программирования для сохраненных процедур и триггеров. Он включает:

  • Инструкции SQL манипулирования данными: INSERT, UPDATE, DELETE и singleton SELECT.
  • Операторы и выражения SQL, включая UDF’s связанные с базой данных и генераторы.
  • Мощно расширяет SQL, включая инструкции присвоения, control-flow инструкции, контекстные переменные (для триггеров), even-posting инструкции, исключительные ситуации и инструкции обработки ошибок.

Следующая таблица суммирует расширения языка для сохраненных процедур:

Инструкция Описание
BEGIN . END Определяет блок инструкций, которые выполняются как одно. Ключевое слово BEGIN начинает блок; ключевое слово END завершает блок. Не должен сопровождаться точкой с запятой.
variable = expression Инструкция присвоения, которая присваивает значение выражения переменной, локальной переменной, входному параметру или выходному параметру.
/* comment_text */ Комментарий к программы, где comment_text может быть текстом содержащим любое количество сток.
EXCEPTION exception_name Поднимает именованную исключительную ситуацию. Исключительная ситуация — определенная пользователем ошибка, которая может быть обработана инструкцией WHEH.
EXECUTE PROCEDURE
proc_name [ var [, var . ]]
[RETUNING_VALUES var [, var . ]]
Выполняет сохраненную процедуру proc_name с входными аргументами следующими за именем процедуры, возвращаемыми значениями в выходных аргументах перечисленных следом за RETURNING_VALUES.
EXIT Переходы к завершающей инструкции END в процедуре.
FOR
DO
Повторение инструкции или блока, который следует за DO, для каждой допустимой строки возращенной .
  • : нормальная инструкция SELECT, за исключением, INTO предложение требуется и должно быть последним.
  • : или одиночная инструкция на языке процедур и триггеров или блок инструкций заключенный в BEGIN и END.
IF ( )
THEN
[ELSE ]
Проверяет , и если оно TRUE, выполняет инструкцию или блок, следующий за THEN; иначе, выполняет инструкцию или блок следующий за ELSE, если он существует.
  • : булево выражение (TRUE, FALSE или UNKNOWN), в основном, это два выражения, используемые как операнды оператора сравнения.
POST event_name Отправляет сообщение event_name.
SUSPEND В проседуре выбора SUSPEND возвращает выходные значения, если любой, вызываемому приложению. Не рекомендуется для исполняемых процедур
WHILE ( )
DO
Пока TRUE, выполняется Первое проверяется и если оно TRUE, то выполняется . Эта последовательность повторяется пока не перестанет быть TRUE.
WHEN
< [, . ] | ANY>
DO

= | SQLCODE errcode
| GDSCODE number >

Инструкция обработки ошибок. Когда одна из определенных ошибок происходит, выполняется . Инструкция WHEN, если присутствует, должна находится в конце блока, непосредственно перед END.

  • : ошибка определенного вида.
  • ANY: обрабатываются все типы ошибок.

Синтаксис

Аргумент Описание
name Имя процедуры. Должно быть уникальным среди процедур, таблиц и видов.
param Входной параметр, который вызывающая программа использует, чтобы передать значения процедуре.
  • param : Имя входного параметра, уникально для переменных внутри процедуры.
  • : Любой тип данных InterBase.
RETURNS param Выходной параметр, который процедура использует, чтобы вернуть значения в вызывающую программу.
  • param : Имя выходного параметра, уникально для переменных внутри процедуры.
  • : Любой тип данных InterBase.

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

AS Ключевое слово, которое разделяет заголовок процедуры и тело процедуры.
DECLARE VARIABLE var Объявляет локальные переменные используемые только в процедуре. Каждому объявлению должно предшествовать DECLARE VARIABLE и должно завершатся точкой с запятой (;).

  • param : Имя локальной переменной, уникально для переменных внутри процедуры.
  • : Любой тип данных InterBase.
statement Любая одиночная инструкция в языке процедур и триггеров InterBase. Каждая инструкция (исключая BEGIN и END) должна завершатся точкой с запятой (;).
terminator Терминатор определенный SET TERM, который указывает завершение тела процедуры. Используется только в ISQL

Примеры

Следующая процедура SUB_TOT_BUGET берет номер отдела в качестве входного параметра и возвращает сумму бюджетов, средний, минимальный и максимальный бюджет департаментов с определенным HEAD_DEPT:

Следующая процедура ORG_CHART выводит диаграмму организации:

Когда ORG_CHART вызвана, например, следующей инструкцией:

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

ORG_CHART должна быть использована как процедура выбора для вывода информации о всей организации. Если будет вызвана с помощью инструкции EXECUTE PROCEDURE, то в первый раз, когда процедура сталкивается с инструкцией SUSPEND, она завершается, возвращая информацию только о Штаб-квартире Корпорации.

Firebird/InterBase Функции

Содержание

  • ibase_add_user — Add a user to a security database (only for IB6 or later)
  • ibase_affected_rows — Return the number of rows that were affected by the previous query

  • ibase_backup — Initiates a backup task in the service manager and returns immediately
  • ibase_blob_add — Add data into a newly created blob
  • ibase_blob_cancel — Cancel creating blob
  • ibase_blob_close — Close blob
  • ibase_blob_create — Create a new blob for adding data
  • ibase_blob_echo — Output blob contents to browser
  • ibase_blob_get — Get len bytes data from open blob
  • ibase_blob_import — Create blob, copy file in it, and close it
  • ibase_blob_info — Return blob length and other useful info
  • ibase_blob_open — Open blob for retrieving data parts
  • ibase_close — Close a connection to an InterBase database
  • ibase_commit_ret — Commit a transaction without closing it
  • ibase_commit — Commit a transaction
  • ibase_connect — Open a connection to an InterBase database
  • ibase_db_info — Request statistics about a database
  • ibase_delete_user — Delete a user from a security database (only for IB6 or later)
  • ibase_drop_db — Drops a database
  • ibase_errcode — Return an error code
  • ibase_errmsg — Return error messages
  • ibase_execute — Execute a previously prepared query
  • ibase_fetch_assoc — Fetch a result row from a query as an associative array
  • ibase_fetch_object — Get an object from a InterBase database
  • ibase_fetch_row — Fetch a row from an InterBase database
  • ibase_field_info — Get information about a field
  • ibase_free_event_handler — Cancels a registered event handler
  • ibase_free_query — Free memory allocated by a prepared query
  • ibase_free_result — Free a result set
  • ibase_gen_id — Increments the named generator and returns its new value
  • ibase_maintain_db — Execute a maintenance command on the database server
  • ibase_modify_user — Modify a user to a security database (only for IB6 or later)
  • ibase_name_result — Assigns a name to a result set
  • ibase_num_fields — Get the number of fields in a result set
  • ibase_num_params — Return the number of parameters in a prepared query
  • ibase_param_info — Return information about a parameter in a prepared query
  • ibase_pconnect — Open a persistent connection to an InterBase database
  • ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
  • ibase_query — Execute a query on an InterBase database
  • ibase_restore — Initiates a restore task in the service manager and returns immediately
  • ibase_rollback_ret — Roll back a transaction without closing it
  • ibase_rollback — Roll back a transaction
  • ibase_server_info — Request information about a database server
  • ibase_service_attach — Connect to the service manager

  • ibase_service_detach — Disconnect from the service manager
  • ibase_set_event_handler — Register a callback function to be called when events are posted
  • ibase_timefmt — Sets the format of timestamp, date and time type columns returned from queries
  • ibase_trans — Begin a transaction
  • ibase_wait_event — Wait for an event to be posted by the database
НОВОСТИ ФОРУМА
Рыцари теории эфира
01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]69vJGqDENq4[/Youtube][/center]
[center]14:36[/center]
Osievskii Global News
29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Ok]376309070[/Ok][/center]
[center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]VVQv1EzDTtY[/Youtube][/center]
[center]10:43[/center]

интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/

[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога — это что, военный объект?
— Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

Функции InterBase

Firebird/InterBase — реляционная база данных, предлагающая много SQL ANSI 92 особенностей, которая работает на Linux, Windows, и разнообразии платформ Unix. Firebird/InterBase предлагает превосходный параллелизм, высокую эффективность, и мощную языковую поддержку для сохраненных процедур и триггеров. Данная СУБД использовалась в промышленных системах, под разнообразием имен с 1981 года.

InterBase является популярной БД фирмы Borland/Inprise. Больше информации о InterBase можно найти на http://www.interbase.com/. Да, кстати, InterBase уже вступил в движение свободно доступных ресурсов!

Firebird — коммерчески независимый проект программистов Си и C++, технических советников и сторонних разработчиков расширения мультиплатформенной системы управления реляционными базами данных, основанной на исходном тексте, выпущенном корпорацией Inprise (теперь известной как корпорация Borland Software), согласно Лицензии v.1.0 25 июля 2000 Interbase Public License. Подробная информация о Firebird доступна на сайте http://www.firebirdsql.org/ .

Примечание: Данное расширение поддерживает InterBase версии 5 и выше, а также все версии Firebird. Поддержка для InterBase версий 5.x была перенесена в PHP 5.

Данная база данных использует одиночную (‘) для escaping, аналогично базе данных Sybase, добавляя в ваш php.ini следующую директиву:

Для установки поддержки InterBase, скомпилируйте PHP с опцией --with-interbase[=DIR] , где DIR - это директория установленного InterBase, по умолчанию: /usr/interbase .

Примечания для пользователей Windows: В дополнение к добавлению модуля поддержки InterBase, вы должны также скопировать файл gds32.dll из бинарного пакета PHP/Win32 в SYSTEM32 вашей ОС. (например: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32 ). Помимо этого, установленный сервер баз данных InterBase должен находится на той же машине, что и PHP.

Директивы Значения по умолчанию Примечания
ibase.allow_persistent "1"
ibase.max_persistent "-1"
ibase.max_links "-1"
ibase.default_db NULL Доступна с PHP 5.0.0.
ibase.default_user NULL
ibase.default_password NULL
ibase.default_charset NULL Доступна с PHP 5.0.0.
ibase.timestampformat "%Y-%m-%d %H:%M:%S"
ibase.dateformat "%Y-%m-%d"
ibase.timeformat "%H:%M:%S"

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

Типы данных InterBase

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

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

Домен – это описание множества допустимых значений поля таблицы. Описание домена показывает тип данных (например, число или строка), дли-ну данных и другие ограничения (например, требование, чтобы первый сим-вол был буквой или чтобы значение не превышало заданного числа). В InterBase домены используются только в операторах создания и изменения структуры таблиц.

Таблица 2.1 – Типы данных InterBase

Название Размер Диапазон/точность Описание
SQL диалект 1
INTEGER 32 бита от –2 147 483 648 до 2 147 483 647 Длинное целое.
SMALLINT 16 бит от –32 768 до 32 767 Короткое целое.
FLOAT 32 бита от 3,4х10P–38P до 3,4х10P38P Число с одинарной точностью (точность 7 значащих цифр).
DOUBLE PRECISION 64 бита от 1,7х10P-308P до 1,7х10P308P Число с двойной точностью (точность 15 значащих цифр)
DATE 64 бита от 1 января 100 года н.э. до 29 февраля 32768 года Дата. Включает информацию о времени.
CHAR(n) n сим-волов n = 1÷32767 Строка символов фиксиро-ванной длины.
VARCHAR(n) n сим-волов n = 1÷32767 Строка символов переменной длины.
BLOB пере-менный нет Двоичные большие объекты, такие как графика, текст, циф-ровой звук. Содержание опре-деляется подтипом.
SQL диалект 3
BIGINT 64 бита от -2P63P до 2P63P-1 Большое целое.
DATE 32 бита от 1 января 100 года н.э. до 29 февраля 32768 года Только дата без информации о времени.
TIME 32 бита от 00:00 до 23:59:9999 Данные о времени с точно-стью до десятитысячной доли секунды.
TIMESTAMP 64 бита Комбинация типов DATE и TIME.

Для создания доменов используется команда CREATE DOMAIN, для изменения – ALTER DOMAIN, а для удаления – DROP DOMAIN.

Ниже приведен упрощенный синтаксис оператора создания домена.

CREATE DOMAIN Имя_Домена [AS] [DEFAULT <Literal | NULL | USER>] [NOT NULL] [CHECK (Проверяемое_Условие)];

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

В приведенном примере необязательный элемент

позволяет задать значение столбца по умолчанию с использованием одной из трех возможностей. Первая возможность, обозначенная как Literal, позволяет задавать значения по умолчанию в виде текстовых констант, чисел и дат. Вторая возможность – указать в определении столбца DEFAULT NULL, что приведет к тому, что во вновь создаваемых записях значение этого столбца будет NULL. Третий способ – указать при определении столбца DEFAULT USER. Если в этом случае в таблицу будет вставлена строка без указания значения этого поля, то в него будет занесено имя текущего пользователя.

Если необходимо, чтобы поле имело какое-то непустое значение, в описание домена вносят NOT NULL.

Последний необязательный элемент в описании домена позволяет заставить сервер проверять заносимые в базу данных значения на выполнение заданного условия.

Вместо элемента должно быть использовано название одного из типов данных InterBase (таблица 2.1).


Фрагмент сценария создания доменов:

CREATE DOMAIN ID INTEGER NOT NULL; -- идентификатор

CREATE DOMAIN Name VARCHAR(30) NOT NULL; -- имя

CREATE DOMAIN CurrentDate DATE DEFAULT 'TODAY' NOT NULL;

CREATE DOMAIN Percent INTEGER-- процент CHECK (VALUE >= 0 AND VALUE

CREATE DOMAIN MEMO BLOB SUB_TYPETEXT SEGMENT SIZE 128;

Синтаксис оператора удаления домена:

DROP DOMAIN Имя_Домена;

Оператор изменения домена ALTER DOMAINпозволяет изменить тип данных, имя домена, а также добавить или удалить условие контроля данных. Чтобы изменить домен можно также внести изменения в системные таблицы.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студентов недели бывают четные, нечетные и зачетные. 9440 - | 7438 - или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

InterBase

Разработчики: Embarcadero Technologies Операционная система: Windows, OS X, Linux и Solaris [1] Платформа: x32, x64 Локализация: Английский Тип ПО: РСУБД Лицензия: Проприетарное ПО Веб-сайт Official website

InterBase - это кросс-платформенная система управления базами данных, первоначально разработанная компанией Borland, которая поддерживает большинство известных платформ: Windows, Linux, Unix, Solaris, Mac OS и т.д. Теперь разработчик InterBase - Embarcadero Company. [2]

Содержание

Обзор

Версионная архитектура

База данных InterBase построена на версионной архитектуре хранения данных. [3] Этот подход обладает рядом преимуществ перед блокировочными СУБД:

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

Преимущества

InterBase обладает целым рядом преимуществ, выгодно отличающих его от остальных СУБД:

  • Обновляемые представления (Views);
  • Двухфазное подтверждение транзакций;
  • Эффективный механизм триггеров;
  • Серверная обработка BLOB-полей (BLOB-filters);
  • События (Уведомления);
  • Шифрование сетевого трафика, базы данных, файлов бекапа и отдельных столбцов БД.

Язык SQL

Язык InterBase SQL совместим со стандартом SQL-92. Кроме того, InterBase server поддерживает расширения стандартного подмножества языка SQL за счет пользовательских функций UDF (User Definded Functions). InterBase SQL предоставляет расширенные возможности SQL для хранимых процедур и триггеров — PSQL.

Подробнее об инструкциях и функциях можно прочитать в справочнике.

Производительность

Сервер InterBase разрабатывался с учетом современных требований к производительности СУБД. В последних версиях InterBase SQL Server применен ряд технологий значительно повышающих скорость работы:

  • Поддержка симметричной многопроцессорной обработки InterBase SMP (symmetric multiprocessing) позволяет задействовать возможности многопроцессорной архитектуры при единственном серверном процессе InterBase SuperServer.
  • Поддержка технологии Hyperthreading.
  • Пакетное выполнение SQL запросов позволяет уменьшить сетевой трафик и повысить производительность.

Текущие версии InterBase

В настоящее время существует несколько клонов серверов InterBase. Есть коммерческая версия, принадлежащая компании Borland - СУБД InterBase версии 5.6. [4] Есть целое семейство серверов InterBase 6.x - Borland InterBase 6.0, 6.5, 7.0, XE, Firebird 3.x и Yaffil (разработка команды программистов из Санкт-Петербурга). Все эти версии основаны на исходном коде Borland InterBase 6.0 и являются практически полностью совместимыми между собой. Системы Borland InterBase 6.0, FireBird 1.x и Yaffil являются Open Source- продуктами, которые можно использовать бесплатно без ограничений на количество пользователей в рамках условий InterBase Public License. Версии Borland 5.6, 6.5 и 7.0, Embarcadero InterBase XE являются коммерческими продуктами и требуют покупки соответствующих лицензий. Опыт множества внедрений подтверждает, что информационные системы работают быстро и устойчиво на любой из версий InterBase.

InterBase против Firebird

Хотя в основе версий InterBase 2009 и Firebird 2.5 лежит общий исходный код InterBase 6.0, эти СУБД на современном этапе развития значительно отличаются друг от друга.

В InterBase 2009 реализованы следующие возможности, которые не поддерживаются в последней версии Firebird 2.5:

  • Шифрование базы данных, а также отдельных столбцов.
  • Шифрование сетевого трафика (Over-the-Wire (OTW) Encryption).
  • Протоколирование операций на базе журналов.
  • Возможность аутентификации на уровне базы данных.
  • Функция экспорта содержимого файлов базы данных (Dump) в режиме онлайн.
  • Функция восстановления состояния из архивов на определенный момент времени (Point-in-Time Recovery).
  • Логический тип данных Boolean.


Клиент-серверная версия Firebird SQL Server существует в двух вариантах: Firebird Super Server и Firebird Classic. В InterBase реализована архитектура, совмещающая в себе достоинства Classic и SuperServer — InterBase SuperServer + SMP.

Архитектура Super Server — все клиентские подключения обслуживаются одним серверным процессом, имеется общий клиентский кеш. За счет этого достигается меньший расход ресурсов на обслуживание клиентов. Недостатком Super Server является отсутствие возможности задействовать несколько процессоров для работы сервера.

Архитектура Classic Server — на каждое клиентское подключение создает отдельный серверный процесс. Архитектура Classic Server более надежна, т.к. сбой одного серверного процесса не вызывает отказ в обслуживании всех клиентов. Кроме того, Classic Server позволяет распределить клиентские подключения на несколько процессоров. Недостатком архитектуры являются дополнительные накладные расходы на обслуживание и синхронизацию процессов, а также отсутствие общего клиентского кеша.

InterBase Super Server + SMP (symmetric multiprocessing) объединяет в себе преимущества двух архитектур Classic и Superserver. Один серверный процесс InterBase Super Server позволяет сократить накладные расходы и использовать общий клиентский Кеш, а технология симметричной обработки SMP задействует возможности многопроцессорной архитектуры, которые раньше были недоступны для Classic Server.

Безопасность InterBase Server

InterBase SQL Server поддерживает несколько методов аутентификации пользователей:

  • Classic Authentication Scheme — пользователи и пароли являются едиными для всех баз и хранятся в системной базе данных InterBase — admin.ib (isc4.gdb).
  • Embedded User Authentication — пользователи и пароли хранятся в клиентской базе данных. Такая схема защищает базы данных от прямого копирования или замены на сервере admin.ib.

Чтобы включить Embedded User Authentication, необходимо при создании базы данных через SQL указать опцию WITH ADMIN OPTION. В IBConsole можно просто указать соответствующий параметр в настройках БД. [5]

Следующие инструкции позволяют управлять механизмом Embedded User Authentication:

После включения возможности хранения пользователей в БД можно управлять пользователями через SQL операторы:

Обе схемы аутентификации Classic и EUA могут быть использованы на сервере InterBase совместно.

Пользователь SYSDBA. Смена пароля по умолчанию

SYSDBA — это административный пользователь InterBase с исключительными правами. Пароль по умолчанию: masterkey. Для того чтобы сменить пароль, используйте утилиту gsec из состава InterBase:

При помощи утилиты gsec можно создавать, удалять, модифицировать и просматривать пользователей. Полный список команд можно получить, набрав help.

Описание процесса установки Interbase

Запуск инсталлятора

Запустите инсталлятор (install_windows.exe, запускается автоматически при вставке компакт-диска с InterBase 7.5. Описание установки Java-инсталлятором, который запускался по умолчанию для InterBase 7.1 и InterBase 7.5 Trial, изложено в документе).

Выберите Install Borland InterBase 7.5. Server.

Появится окно с предложением закрыть все активные приложения и с комментариями по MultiInstance. Это окно выдается новым windows-инсталлятором. Предыдущий инсталлятор был написан на Java, который слегка отличается от Windows-инсталлятора.

Следующее окно – текст лицензии. Прочитайте его и нажмите Yes если согласны, или No если не согласны.

Далее появится окно с выбором Multi-Instance установки. Multi-Instance позволяет установить несколько экземпляров InterBase на один компьютер, которые будут работать на разных портах (3050 gds_db по умолчанию). Для каждого экземпляра требуется отдельная серверная лицензия (как минимум).

Как правило, выбор Multi-Instance делается, если устанавливается вторая копия сервера. При первой установке или обновлении сервера выберите No (или не меняйте No на Yes), и нажмите Next.

Если выбрано Register, то в конце установки будет предложено зарегистрировать серверную или unlimited лицензию. Если Register убрано, то для последующей регистрации нужно будет запустить инсталлятор повторно, и убрать все пункты в этом диалоге, кроме Register.

Выбор каталога для установки

Если вы производите переустановку сервера, убедитесь, что в каталоге, куда вы устанавливаете сервер, не осталось никаких файлов от предыдущих установок InterBase. Если вы устанавливаете 7.5.1 поверх 7.1 или 7.5, скопируйте заранее файлы borland.lic, ib_license.dat, admin.ib и ваши udf (если таковые есть).

При нажатии Next начнется установка сервера, клиента или регистрация (в зависимости от выбранных ранее пунктов).

Регистрация

Введите серийный номер и ключ серверной лицензии или unlimited-лицензии. В случае регистрации unlimited-лицензии регистрировать серверную лицензию не нужно (если вы попытаетесь зарегистрировать unlimited поверх серверной или наоборот, то borland.lic будет испорчен, и сервер не будет работать) .

Если в серийном номере или ключе есть вопросительные знаки "?", то их именно так и нужно вводить с клавиатуры. Например, "AB?C-?K8. "

После ввода ключа еще раз появится лицензионное соглашение.

Следующее окно – выбор метода регистрации.

Регистрация через интернет. Производится напрямую в Borland, используя ssl (порт 443). Возможна в том случае, если на данном компьютере есть соединение с интернет и не закрыт порт 443. Такой метод подходит только при регистрации лицензии на компьютере разработчика, т. к. серверы обычно не имеют доступа в интернет как извне так и изнутри сети.

Регистрация по телефону или через web. Позволяет зарегистрировать лицензию по телефону или через web (reg.borland.com), если на данном компьютере нет доступа в интернет.

Для регистрации на reg.borland.com у вас должен быть логин и пароль на bdn.borland.com, причем до регистрации нужно "залогиниться" на сервер, иначе регистрация ключа невозможна. После успешного логина как на bdn.borland.com так и на reg.borland.com будет показываться приветствие Welcome FirstName LastName, где FirstName и LastName – ваши имя и фамилия, указанные при регистрации.

Файл активации вам будет выслан на email, указанный при регистрации логина bdn.borland.com . Не ошибитесь при указании email – регистрационная система не проверяет ошибки доставки, поэтому каждая регистрация через web будет расцениваться как успешная, а число перерегистраций может быть не более 3 (после чего нужно обратиться в Borland за увеличением числа регистраций).

Зайдите на [reg.borland.com] с этого или любого другого компьютера. Проверьте, что система вас узнает (пишет Welcome Имя Фамилия). Если нет – залогиньтесь на [bdn.borland.com], указав при логине чтобы система "помнила" вас (для этого в браузере должны быть включены cookies).

Введите в браузере тот же серийный номер, и регистрационный ключ, который вам выдал диалог регистрации (он будет отличаться от приведенного на картинке). Регистрационный ключ будет по крайней мере в одном сеансе Windows одним и тем же, если вы запускаете инсталлятор на одном и том же компьютере, вводя ту же самую комбинацию серийного номера и активационного ключа. При переустановке операционной системы или при установке сервера на другой компьютер регистрационный ключ будет другим. Получаемый файл активации всегда должен соответствовать регистрационному ключу, иначе он не будет принят инсталлятором.

Нажмите Register в браузере. Через некоторое время на ваш email, который указан в регистрационной информации для bdn.borland.com, будет прислано письмо с файлом регистрации. Сохраните этот файл (regNNN.txt, где NNN – номер, в зависимости от типа лицензии – триал, серверная, unlimited и т. п.) в какой-нибудь каталог.

Наличие файла регистрации, полученного от Borland, позволяет вам переустановить InterBase на этом же компьютере с той же самой операционной системой (см. выше о регистрационном ключе) без необходимости регистрации напрямую или через reg.borland.com.

Если вы не закрывали инсталлятор (не нажимали Finish в предыдущем диалоге. Если нажали – запустите инсталлятор еще раз, выберите Register убрав все эти пункты, и дойдите до диалога с выбором вариантов регистрации – напрямую, через web или по телефону и т. п.


Выберите пункт Import Software Activation Information from a file or email.

Нажмите Next. Появится диалог, где можно выбрать файл regNNN.txt, полученный по email и сохраненный заранее.

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

  • вы указали правильный Serial Number как в инсталляторе так и на reg.borland.com
  • вы правильно ввели Activation Key в инсталляторе
  • вы правильно ввели на reg.borland.com регистрационный ключ, выданный вам инсталлятором.

Проверка регистрации

По умолчанию сервер InterBase устанавливается как сервис. В этом режиме невозможно понять, какие лицензии успешно зарегистрированы. Для этого на Windows откройте Панель Управления, Администрирование, Сервисы.

Если сервисы InterBase 7.5 Guardian и Server запущены, остановите сервис Guardian (сервис InterBase 7.5 Server должен остановиться автоматически через 1-2 секунды).

Откройте окно cmd (пуск, выполнить, cmd). Перейдите в каталог установки InterBase 7.5 выдав команды (по необходимости):

Если лицензии не зарегистрированы или зарегистрированы неуспешно, при запуске InterBase в режиме приложения он выдаст сообщение "InterBase licensing error, Please check the interbase.log file for details" или "License file is missing or corrupt".

Если лицензии (серверная или unlimited) зарегистрированы успешно, вы увидите в панели задач (справа, где системные иконки) иконку InterBase. Нажмите на ней правую кнопку мыши, и выберите Properties.

В пункте License вы увидите установленные лицензии.

Нажмите правую кнопку мыши на иконке InterBase, выберите Shutdown. Вернитесь в панель управления сервисами, запустите сервис InterBase 7.5 Guardian. Сервер в этом случае запустится автоматически.

Создание базы данных

Для того, чтобы создать базу [6] данных, необходимо на компьютере, на котором установлен Interbase/Firebird, запустить утилиту IBConsole(ярлык находится в группе Interbase), войти на сервер(Server | Login, по умолчанию после установки пользователь: SYSDBA, пароль: masterkey), далее запустить утилиту Interactive SQL: пункт меню Tools | Interactive SQL .

Если это первый запуск IBConsole после установки Interbase/Firebird, то сервер необходимо сначала зарегистрировать в IBConsole. Выберите пункт меню Server | Register, в появившимся окне выберите Local Server и нажмите ОК. После чего нужно выполнить процедуру входа на сервер, описанную выше.

После установки ProxyInspector SQL скрипт для создания БД на сервере Interbase/Firebird находится в каталоге

- каталог в который установлен ProxyInspector. Нажно открыть этот скрипт в ISQL командой Query | Load Script:

вместо строки enter database filename here ввести желаемое полное имя и путь к файлу БД(с расширением .gdb), также заменить, если нужно имя пользователя и пароль(сохранять не рекомендуется), после чего выполнить команду Query | Execute. База данных будет создана.

Теперь нужно указать путь к ней в ProxyInspector. Запустите ProxyInspector, выберите пункт меню База | Настройки программы, страница База данных | Сервер Interbase:

при доступе по протоколу TCP/IP путь к БД будет состоять из имени или IP-адреса сервера БД и полного имени файла БД (это же имя указывалось в SQL скрипте при создании БД), разделенных двоеточием. Например: db-server:c:\db-data\interbase\pi_ent.gdb или 10.0.0.5:d:\data\pi_ent.gdb и.т.д.

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

После этого на странице База данных настроек также нужно выбрать Сервер Interbase, нажать OK и перезапустить PI. После чего выбрать База данных | Соединить для подключения к БД.

Для доступа к БД Interbase с других компьютеров необходимо наличие библиотеки gds32.dll в каталоге \system32 . Эта библиотека находится в каталоге \system32 компьютера с сервером Interbase и также устанавливается при установке Interbase

Подключение к InterBase из клиентского приложения

Для начала скачайте и установите пакет IBProvider Professional Edition.

IBProvider Professional Edition — это набор COM-компонент, которые позволяют работать с любыми версиями InterBase и Firebird. Компоненты поддерживаются большинством средств разработки: Delphi, C++ Builder, Visual C++, .Net Framework, C#, Visual Basic, VBScript, VBA и др.

Для проверки подключения к InterBase напишем простой сценарий на языке VBScript. Создайте пустой файл с расширением vbs и вставьте в него следующий код, указав правильный путь к базе данных:

Запустите скрипт на выполнение в режиме командной строки, и вы увидите список активных подключений к БД.

InterBase и VBScript, Visual Basic, VBA

Для доступа к InterBase и Firebird из VBScript, VBA, Visual Basic используется библиотека ADO (ActiveX Data Objects). Множество примеров работы с этой библиотекой вы найдете в документации: примеры InterBase VBScript, VBA, Visual Basic.

InterBase и Delphi

IBProvider предлагает несколько способов работы с InterBase из Delphi:

  • dbGo (ADO Express) компоненты, работающие через библиотеку ADO.
  • прямой доступ к COM-интерфейсам ADO, минуя компоненты dbGo.
  • прямой доступ к COM-интерфейсам OLE DB при помощи сторонних VCL-компонент (OLE DB Direct/OLE DB Express).

InterBase и .Net

Для доступа к InterBase из .Net используется библиотека ADO .Net. На сайте IBProvider опубликовано большое пошаговое руководство, посвященноеработе с InterBase в Visual Studio .Net (ADO .Net).

InterBase и C++

IBProvider Professional Edition includes C++ library for working with OLE DB providers. It is the fastest means of working with OLE DB providers from Visual C++ 2005-2008 and from C++ Builder.

Редактирование базы InterBase — создание таблиц, связей, ключей

В пустой базе данных необходимо создать таблицы, связи между таблицами, первичные ключи, индексы, хранимые процедуры, генераторы и другие объекты. Для редактирования баз данных вы можете использовать встроенные средства InterBase — IBConsole или утилиту isql.exe.

Создание таблицы InterBase при помощи IBConsole


  1. В диалоговом окне Interactive SQL, загрузите скрипт tables.sql, чтобы ввести остальные определения таблицы в базе данных TUTORIAL, выбрав Query> Load Script. [7]
  2. Нажмите на Таблицы в левой панели IBConsole, чтобы проверить, что теперь у вас есть десять новых таблиц в базе данных TUTORIAL.

Создание таблицы InterBase при помощи утилиты isql.exe

Вставляем одну запись и делаем выборку из таблицы:

Помимо isql существуют различные графические утилиты администрирования InterBase.

Утилиты администрирования InterBase

IBExpert

IBExpert — Поддерживает InterBase, Firebird, Yaffil. Редакторы DDL и DML. Визуальный построитель запросов. Автозавершение кода, Metadata Extractor, а также множество других возможностей.

IB/FB Development Studio

IB/FB Development Studio — визуальный дизайнер баз данных, встроенный MERGE, scheduler, Code auto completion, анализатор запросов, монитор производительности.

Blaze Top

Blaze Top — инструмент разработчика и администратора баз данных. Поддерживает Firebird и InterBase.

Database Workbench

Database Workbench — поддерживает несколько серверов баз данных, среди которых есть Firebird и InterBase. Отладка хранимых процедур, анализ планов, встроенные средства переноса данных и метаданных.

Firebird/InterBase Функции

Содержание

  • ibase_add_user — Add a user to a security database
  • ibase_affected_rows — Return the number of rows that were affected by the previous query
  • ibase_backup — Initiates a backup task in the service manager and returns immediately
  • ibase_blob_add — Add data into a newly created blob
  • ibase_blob_cancel — Cancel creating blob
  • ibase_blob_close — Close blob
  • ibase_blob_create — Create a new blob for adding data
  • ibase_blob_echo — Output blob contents to browser
  • ibase_blob_get — Get len bytes data from open blob
  • ibase_blob_import — Create blob, copy file in it, and close it
  • ibase_blob_info — Return blob length and other useful info
  • ibase_blob_open — Open blob for retrieving data parts
  • ibase_close — Close a connection to an InterBase database
  • ibase_commit_ret — Commit a transaction without closing it
  • ibase_commit — Commit a transaction
  • ibase_connect — Open a connection to a database
  • ibase_db_info — Request statistics about a database
  • ibase_delete_user — Delete a user from a security database
  • ibase_drop_db — Drops a database
  • ibase_errcode — Return an error code
  • ibase_errmsg — Return error messages
  • ibase_execute — Execute a previously prepared query
  • ibase_fetch_assoc — Fetch a result row from a query as an associative array
  • ibase_fetch_object — Get an object from a InterBase database
  • ibase_fetch_row — Fetch a row from an InterBase database
  • ibase_field_info — Get information about a field
  • ibase_free_event_handler — Cancels a registered event handler
  • ibase_free_query — Free memory allocated by a prepared query
  • ibase_free_result — Free a result set
  • ibase_gen_id — Increments the named generator and returns its new value
  • ibase_maintain_db — Execute a maintenance command on the database server
  • ibase_modify_user — Modify a user to a security database
  • ibase_name_result — Assigns a name to a result set
  • ibase_num_fields — Get the number of fields in a result set
  • ibase_num_params — Return the number of parameters in a prepared query
  • ibase_param_info — Return information about a parameter in a prepared query
  • ibase_pconnect — Open a persistent connection to an InterBase database
  • ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
  • ibase_query — Execute a query on an InterBase database
  • ibase_restore — Initiates a restore task in the service manager and returns immediately
  • ibase_rollback_ret — Roll back a transaction without closing it
  • ibase_rollback — Roll back a transaction
  • ibase_server_info — Request information about a database server
  • ibase_service_attach — Connect to the service manager
  • ibase_service_detach — Disconnect from the service manager
  • ibase_set_event_handler — Register a callback function to be called when events are posted
  • ibase_trans — Begin a transaction
  • ibase_wait_event — Wait for an event to be posted by the database

User Contributed Notes 7 notes

It is not possible to use interbase/firebird without initiating transactions. It seems that transactions are not automatically committed or rolled back at the end of a script, so remember to end all interbase enabled scripts with ibase_rollback() or ibase_commit().

Worse is, that if you use ibase_pconnect (recommended), transactions survive from one request to the next. So that if you don't rollback your transaction at the end of the script, another user's request might continue the transaction that the first request opened.

This has two implications:
1) Clicking refresh in your browser won't make you see newer data, because you still watch data from the same transaction.
2) Some php scripts might fail occassionally and not fail in other occasions, depending on with apache server thread and thereby which transaction they start using.

Unfortunately, there is no such thing as
if (ibase_intransaction()) ibase_rollback();

so be sure that ALL your scripts end with an ibase_rollback() or ibase_commit();

Here's an example for getting results back from stored procedure in firebird.
The example make use of the stored procedure in Employee.gdb and the show_langs procedure.

$dbh = ibase_connect ( $host, $username, $password ) or die ("error in db connect");
$stmt="Select * from SHOW_LANGS('SRep',4,'Italy')";
$query = ibase_prepare($stmt);
$rs=ibase_execute($query);
$row = ibase_fetch_row($rs);

/* free result */
ibase_free_query($query);
ibase_free_result($rs);

If you are using VirtualHosts with Apache, you might find useful the following directive:

php_flag magic_quotes_sybase on

Use it in any VirtualHost and it will be set locally to that VirtualHost without interfering with any global setting.
This is an example:

ServerName www.samplehost.com
DirectoryIndex index.php index.htm
php_flag magic_quotes_sybase on

For those who have problem with returning values from Stored Procedures in PHP-Interbase, I have found a solution. Use a select sentence like this:
select * from sp_prodecure(param, . )
However, it is important that the procedure has a SUSPEND statement or else the procedure won't return any values.

But the "message length" (see above note) bug that you encounter when you try to execute a procedure should be fixed !

This example have 2 problems my be the autor writes it to fast but in the first case use one var for define user pass and and the use other one for call them and in secon step use comas after the ;

$db = '/path/to/database.gdb';
$user = 'username';
$password = 'password';
$res = ibase_connect($db,$dbuser,$dbpass) or die("
" . ibase_errmsg());

// Query
$sql="SELECT * FROM table;"

Here is a minimalistic code example. Be sure to create an user and a database in order to make it work.

// Minimalistic code example

// Connection
$db = '/path/to/database.gdb' ;
$user = 'username' ;
$password = 'password' ;
$res = ibase_connect ( $db , $dbuser , $dbpass ) or die( "
" . ibase_errmsg ());

// Query
$sql = "SELECT * FROM table;"
$result = ibase_query ( $res , $sql ) or die( ibase_errmsg ());
while( $row = ibase_fetch_object ( $result )) <
// use $row->FIELDNAME not $row->fieldname
print $row -> FIELDNAME ;
>
ibase_free_result ( $result );

// Closing
ibase_close ( $res ) or die( "
" . ibase_errmsg ());
?>

The following code can be used when creating tables in order to get auto incrementing fields:

// This function generates an autoincrement field, such as MySQL AUTO_INCREMENT.
function generate_autoincrement ( $tablename , $primarykey ) <
// * Generator
dbexec ( 'CREATE GENERATOR GEN_' . $tablename . '_PK;' );
// * Trigger
dbexec ( 'CREATE TRIGGER INC_' . $primarykey . ' FOR ' . $tablename
. chr ( 13 ) . 'ACTIVE BEFORE INSERT POSITION 0'
. chr ( 13 ) . 'AS'
. chr ( 13 ) . 'BEGIN'
. chr ( 13 ) . 'IF (NEW.' . $primarykey . ' IS NULL) THEN'
. chr ( 13 ) . 'NEW.' . $primarykey . '= GEN_ID(GEN_' . $tablename . '_PK, 1);'
. chr ( 13 ) . 'END' );
>
?>

Usage: ( 'table' , 'column name' ); ?>

XLV. Функции InterBase

InterBase является популярной БД фирмы Borland/Inprise. Больше информации о InterBase можно найти на http://www.interbase.com/. Да, кстати, InterBase уже вступил в движение свободно доступных ресурсов!

Примечание: полная поддержка InterBase 6 была введена в PHP 4.0.

Эта БД использует символ одинарной кавычки (') для escapi-рования (мнемонизации), поведение аналогично БД Sybase. Добавьте в ваш файл php.ini следующую директиву:

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

Некоторые функции, используемые в InterBase

AVG(значение | DISTINCT значение) – вычисление среднего из числовых значений столбца или выражения.

DISTINCT означает исключение дублирующих значений при вычислении среднего. Значение - столбец или выражение, приведенное к числовому типу.

COUNT ( * | значение | DISTINCT значение) – вычисление числа строк, которые удовлетворяют условиям запроса:

* – Вычисление числа строк в таблице

MAX(значение | DISTINCT значение) – вычисление максимального значения в столбце.

MIN(значение | DISTINCT значение) – вычисление минимального значения в столбце.

SUM(значение | DISTINCT значение) – вычисление суммы значений в столбце.

UPPER (строковое значение) – преобразование строки в верхний регистр.

Создание просмотров

Просмотр (view)- это виртуальная таблица, которая не сохраняется физически в БД, но выглядит в точности как реальная таблица. Просмотр может содержать выборочные данные из одной или нескольких таблиц или других просмотров и используется для сохранения наиболее часто используемых запросов к БД.

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

Просмотр может быть создан как:

· Вертикальное подмножество столбцов одной таблицы. Например, следующий просмотр выводит фамилии всех учеников школы (подмножество столбцов):

CREATE VIEW ALL_PUPIL

SELECT FIO_PUPIL FROM PUPIL;

· Горизонтальное подмножество строк из одной таблицы. Следующий просмотр выводит все столбцы таблицы PUPIL, но только подмножество строк, в которых BALL (средний балл) меньше 3,5:

CREATE VIEW BAD_PUPIL

SELECT * FROM PUPIL WHERE BALL 4;

· Подмножество строк и столбцов из нескольких таблиц. Следующий просмотр показывает записи из таблиц >

CREATE VIEW BEST_PUPIL(

NAMECLASS, FIO_PUPIL, BALL)

SELECT C.NAMECLASS, P.FIO_PUPIL, P.BALL

FROM CLASS C, PUPIL P

Создадим просмотр, возвращающий отличников класса с указанием имени класса (текст процедуры см. выше. Для создания нового просмотра в IB Expert следует нажать выбрать пункт меню DataBase, New View. При этом появится заготовка нового просмотра (рис. 20):

Рис. 20. Создание просмотра

На закладке Data можно увидеть данные в просмотре (рис. 21).

Рис. 21. Данные в просмотре.

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

SELECT * FROM BEST_PUPIL WHERE NAME_ >

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

Таким образом, наша база данных включает: пять таблиц, пять генераторов (ИмяТаблицы_GEN), исключения. Для каждой таблицы созданы процедуры добавления (INS_ИмяТаблицы), удаления (DEL_ИмяТаблицы) и обновления (UPD_ИмяТаблицы) данных. Также каждая таблица имеет процедуру, возвращающую следующее значение ее генератора (N_ИмяТаблицы). Для таблицы учеников создан триггер, изменяющий значение количества учеников в классе при переводе ученика из одного класса в другой. Добавлено 3 процедуры для создания выходных документов и один просмотр.

После создания серверной части клиент-серверного приложения можно приступить к клиентской.

InterBase

SQL-сервер InterBase реализует версию языка SQL, совместимую со стандартом SQL-92 (SQL2), является наиболее приспособленным для использования в приложениях, разработанных с помощью системы Delphi, и не требует установки дополнительных драйверов. InterBase прост в установке, настройке и администрировании по сравнению с другими SQL-серверами и обладает хорошими функциональными возможностями. Кроме того, следует отметить появление таких бесплатно распространяемых аналогов (клонов) этого сервера, как Firebird и Yaffil [11].

SQL-сервер InterBase обеспечивает хранение и обработку больших объемов информации при одновременной работе с БД множества клиентских приложений. Чтобы максимально разгрузить клиентские приложения от вычислительной работы и гарантировать высокую защищенность и целостность информации, InterBase реализует многие возможности, предусмотренные в языке SQL. Так, для задания ограничений целостности можно определить:

  • 1) связи между таблицами БД путем указания первичных ключей (PRIMARY KEY) у главных таблиц и внешних ключей (FOREIGN KEY) у подчиненных таблиц;
  • 2) ограничения на значения, хранящиеся в отдельных столбцах (CHECK, CONSTRAINT);
  • 3) триггеры (TRIGGER) — подпрограммы, автоматически выполняемые SQL-сервером до и/или после изменения в таблице БД;
  • 4) генераторы (GENERATOR) для создания и использования уникальных значений, хранящихся в определенных столбцах.

Для ускорения взаимодействия клиентских приложений с удаленной БД можно использовать хранимые процедуры (STORED PROCEDURE), представляющие собой подпрограммы, способные посылать запросы к БД и выполнять условные ветвления и циклическую обработку. Хранимые процедуры пишутся с использованием специальных языковых конструкций и содержат часто повторяющиеся последовательности запросов к БД. Текст процедур размещается на сервере в откомпилированном виде. При использовании хранимых процедур:

  • 1) не требуется синтаксическая проверка каждого запроса и его компиляция перед выполнением, что ускоряет выполнение запроса;
  • 2) из клиентского приложения исключается реализация запросов, находящихся в теле хранимых процедур;
  • 3) ускоряется обработка транзакций, т.е. нескольких последовательных логически связанных операторов языка SQL, которые рассматриваются как единое целое, так как вместо длинного SQL-запроса но компьютерной сети передается короткое обращение к хранимой процедуре. Транзакция переводит базу данных из одного целостного состояния в другое.

Таблицы в БД InterBase состоят из содержащих информацию столбцов, типы которых перечислены в табл. 4.7. В частности, столбцы типа BLOB (Binary Large Object — большой двоичный объект) предназначены для хранения больших объемов информации в виде последовательности байтов. Таким образом могут храниться текстовые и графические данные, а также мультимедийная информация. Смысловая интерпретация этой информации выполняется приложением, но разработчик БД может задать так называемые BLOB- фильтры для автоматического преобразования хранящейся информации к другому виду.

Системные таблицы InterBase
Страница 9. Функции

Функции

Функции позволяют наращивать возможности InterBase-сервера за счет подключения к базе данных модулей из dll, которые могут быть реализованы на любом языке программирования. Прежде чем пользоваться функциями, давайте сначала узнаем, а какие функции декларированы в базе данных. Основная информация о функциях находится в таблицах RDB$FUNCTIONS и RDB$FUNCTION_ARGUMENTS.

Этот запрос вернет Вам список всех декларированных функций. Но это только список. Давайте посмотрим, где находятся эти функции и под каким именем их вызывать из библиотек.

Приведенный выше запрос возвращает, кроме наименования функции, под которым она известна в базе данных, наименование модуля, точку входа (наименование в модуле), позицию аргумента, возвращаемого программе вызова. Сами аргументы функции содержаться в таблице RDB$FUNCTION_ARGUMENTS. Покажем, как можно узнать, какие аргументы имеет некоторая функция.

Илон Маск рекомендует:  Что такое код swf_addcolor
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL