Программирование >>  Построение запросов sql 

1 ... 71 72 73 [ 74 ] 75 76 77 ... 101


контекстная переменная ROW COUNT проверяет, возвращает ли последняя выборка (FETCH) из явного курсора строку данных. Если нет, то происходит выход из цикла WHILE с помощью оператора LEAVE и закрытие курсора.

Следует помнить, что имена курсоров должны быть уникальными в контексте того модуля, где курсоры используются. Т.е. каждый явный и неявный курсор (если для него объявлено имя с помощью конструкции AS CURSOR имя курсора) должны иметь различные имена. Однако допускается совпадение имени курсора с именем любой переменной, используемой в том же самом модуле.

Явный курсор, как и неявный, допускает позиционированные обновления и удаления.

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

6.1.4. SQL сценарии

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

SQL сценарий (файл-сценарий, скрипт) - это текстовый файл, содержащий запросы и операторы SQL и обычно имеющий расширение sql. Все запросы, команды и операторы SQL сценария выполняются последовательно в том порядке, в котором они следуют в скрипте, и должны быть отделены друг от друга разделителем (точкой с запятой или тем, который задан с помощью оператора SET TERM).

В файле SQL сценария рекомендуется использовать разные разделители для разделения внутренних операторов ХП или триггера от внешних запросов (команд).

Новый внешний разделитель определяется оператором SET TERM в следующем формате: SET TERM новый разцелитель старый разцелитель.

Например, чтобы определить в качестве разделителя два восклицательных знака (!!) вместо обычного разделителя (;), необходимо использовать следующий оператор: SET TERM !! ;.

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

SET TERM ; !!

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



Запуск на выполнение SQL сценария в СУБД Firebird производится выбором пункта Выполнить скрипт (<F9>) меню редактора скриптов (<Ctrl+F12>) утилиты IBExpert. При выполнении скрипта происходит компиляция хранимых процедур и триггеров, включенных в текст данного SQL-скрипта.

В общем случае скрипт може содержать запросы модификации БД (язык DDL), запросы изменения данных (язык DML) и команды фиксации/отмены транзакций. Запросы выборки данных в скрипте использовать нельзя (кроме передачи их в строке с помощью оператора EXECUTE STATEMENT, который будет подробно рассмотрен позднее, или для задания набора данных курсора).

Текстовый файл скрипта также может содержать команду на создание БД, которая имеет следующий синтаксис: CREATE DATABASE filespec [USER username [PASSWORD password]] PAGE SIZE [=] int ] DEFAULT CHARACTER SET charset];, где

filespec - спецификация файла новой БД; USER username] - задает имя пользователя; [PASSWORD password] - задает пароль;

PAGE SIZE [=] int] - устанавливает размер в байтах страниц БД [допустимо 1024, 2048, 4096 (по умолчанию), 8192 и 16384];

[DEFAULT CHARACTER SET charset] - устанавливает набор символов с именем charset для БД, используемый по умолчанию. Если опущено, то в качестве набора символов по умолчанию принимается NONE.

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

1. Создание БД без задания кодовой таблицы.

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

Команда на создание БД без задания кодовой таблицы имеет следующий синтаксис:

CREATE DATABASE filespec

[USER username [PASSWORD password]]

PAGE SIZE [=] int ]

DEFAULT CHARACTER SET NONE];.

Например, для создания БД без задания кодовой таблицы можно использовать следующую команду:

CREATE DATABASE c:\sqllab.fdb -- спецификация файла БД USER SYSDBA PASSWORD masterkey PAGE SIZE 4096

DEFAULT CHARACTER SET NONE;

2. Создание БД с кодовой таблицей WIN1251.



В этом случае команда на создание БД имеет следующий синтаксис:

CREATE DATABASE filespec

[USER username [PASSWORD password]]

[PAGE SIZE [=] int ]

[DEFAULT CHARACTER SET WIN1251];.

Важной характеристикой БД, помимо размера страницы и набора символов, является ее диалект. Создание новой БД в Firebird возможно в диалекте 1 или диалекте 3, однако рекомендуется создавать новые базы в диалекте 3, так как он предоставляет наиболее полный набор возможностей Firebird. Учебная база данных, используемая в данном пособии, создана на диалекте 3.

Чтобы задать диалект создаваемой БД в скрипте, следует перед командой CREATE DATABASE выполнить следующую команду:

SET SQL DIALECT номер циалекта;,

где номер циалекта равен 1 или 3.

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

Каждый скрипт должен содержать подключение к БД, которое производится с помощью команды CONNECT, имеющей следующий формат:

CONNECT filespec

[USER username] [PASSWORD password] [ROLE rolename];.

Например, для подключения к созданной базе данных с именем sgllab.fdb следует использовать следующую команду:

CONNECT c:\sqllab.fdb USER SYSDBA PASSWORD masterkey;.

Для автоматического помещения данной команды в начало создаваемого скрипта достаточно в окне редактора скриптов выбрать в меню Скрипт пункт Добавить оператор CONNECT в начало скрипта . В появившемся окне нужно выбрать БД, для которой будет использоваться скрипт.

Скрипт может содержать команду DISCONNECT для принудительного разрыва соединения с БД после выполнения необходимых операций. Команда DISCONNECT имеет следующий синтаксис:

DISCONNECT filespec;.

Например, для отсоединения от подключенной учебной БД с именем sgllab.fdb можно использовать следующую команду: DISCONNECT c:\sqllab.fdb;.

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

Различают следующие типы комментариев:

- блочный, который содержит одну или несколько строк комментария. В основном блочный комментарий располагается на отдельной строке (или строках), но может располагаться и в той же строке, что и оператор SQL.



1 ... 71 72 73 [ 74 ] 75 76 77 ... 101

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика