Ошибки в isql обрабатываются тем же образом, что и приложении DSQL. isql отображает сообщение об ошибке, содержащее переменную SQLCODE и текст сообщения из массива состояния Firebird, как показано на рис. 37.4.
Рис. 37.4. Пример сообщения об ошибке в isql
Ошибки SQL со значением SQLCODE меньше нуля означают, что оператор не был выполнен. Все они представлены в приложении 10. Вы можете также увидеть одно из предупреждений SQL или информационное сообщение, а именно:
* 0: SUCCESS (успешное выполнение);
* +1-99-. SQLWARNING (системное предупреждение или информационное сообщение);
* +100 NOT FOUND (указывает, что указанные строки не найдены или достигнут "конец файла"; т. е. определен конец текущего активного набора строк).
Установка в isql диалекта
Если вы запустили isql и соединились с базой данных без указания диалекта, утилита принимает диалект базы данных.
Вы можете установить диалект для isql несколькими способами.
* При запуске isql:
[bin] isql -s n
где n- число 1, 2 или 3. Если вы зададите диалект этим способом, isql сохранит данный диалект после соединения, если только вы явно его не измените.
* В сессии isql или в скрипте SQL:
SET SQL DIALECT N;
Утилита продолжит работать с этим диалектом, пока он не будет явно изменен. Диалект не может быть установлен как параметр оператора CREATE DATABASE.
! ! !
ВНИМАНИЕ! Когда вы создаете базу данных интерактивно с использованием isql, база данных будет в том диалекте, который в настоящий момент существует у isql во время выдачи оператора CREATE DATABASE. Вам нужно будет учесть это, если у вас была перед этим открыта база данных с диалектом 1, потому что isql останется в диалекте 1 и после отключения от базы данных с диалектом 1.
. ! .
Воздействие диалектов
Эффекты команд могут иметь некоторые изменения в зависимости от диалекта.
* Клиент диалекта 1 обрабатывает все команды в соответствии с ожиданием языка InterBase 5 и синтаксиса с некоторыми изменениями. Например, если вы создаете таблицу, в которой задается столбец типа DATE, вы увидите информационное сообщение, говорящее, что "DATE datatype is now called TIMESTAMP" (Тип данных DATE сейчас называется TIMESTAMP).
* В клиенте диалекта 2 элементы, имеющие различную интерпретацию в диалектах 1 и 3, отмечаются предупреждениями или ошибками для помощи в миграции баз данных в диалект 3.
* Клиент диалекта 3 анализирует все операторы в соответствии с родной семантикой SQL Firebird: кавычки используются для идентификаторов с ограничителями и не распознаются как ограничители строк, тип данных DATE содержит только дату, а истинные числа (числа с фиксированной точкой) с точностью больше 9 хранятся как BIGINT (NUMERIC(18, О) в Firebird 1.0.x).
Вы можете интерактивно вводить три вида команд или операторов в подсказке SQL>.
* Операторы SQL определения данных (DDL), такие как CREATE, ALTER, DROP и REVOKE. Эти операторы создают, изменяют или удаляют метаданные и объекты или управляют полномочиями доступа пользователя (привилегиями) к базе данных.
* Операторы SQL манипулирования данными (DML), такие как SELECT, INSERT, UPDATE и DELETE. Выход операторов SELECT может быть отображен или направлен в файл (см. команду OUTPUT).
* Команды isql, которые разделяются на три основные категории:
• общие команды (например, команды чтения входного файла, записи в выходной файл или завершения сессии isql);
• команды SHOW (для отображения метаданных и другой информации базы данных);
• команды SET (для изменения окружения isql).
Создание и изменение объектов базы данных
В сессии isql вы можете выдавать операторы DDL один за другим для создания (CREATE) или удаления (DROP) баз данных, доменов, генераторов, таблиц, индексов, триггеров и хранимых процедур. Вместе с исключениями генераторов вы также можете выдавать операторы ALTER для любого из этих объектов.
Поскольку можно создавать базу данных, выдавая и подтверждая серии операторов DDL в процессе сессии интерактивной isql, такой подход является специализированным. Он не позволяет документировать процесс и оставляет дыры в процессе отладки и тестирования.
Скрипты
Очень хорошей практикой является использование скриптов для создания базы данных и ее объектов. Скрипт для создания и изменения объектов базы данных иногда называют скриптом схемы, файлом определения данных или просто DDL-скриптом. Тема использования скриптов схемы рассматривается в деталях в главе 14.
Читать дальше