 |
Как написать SQL-script
(маленький совет)
Еще один учебник по SQL – скажет кто-нибудь и будет не прав. Об SQL ни слова, или почти ни слова. Речь пойдет об оформлении программ на SQL.
Программа (или script) на языке SQL представляет собой простой текстовый файл и для небольших по размеру программ вполне можно использовать редактор Notepad (Блокнот) который вход в штатную поставку Windows. Однако если у нас программа занимает несколько страниц (или сотен страниц - в качестве такого примера можно сказать, что SQL-script, описывающий базу данных бухгалтерской программы "АзБука", состоит примерно из 43000 строк (540 страниц), и создает полностью базу данных – таблицы, представления, процедуры, определения прав доступа и даже заполнение некоторых служебных таблиц) возникают две неприятности – маленькая и большая.
Маленькая заключается в том, что редактор Notepad при больших размерах файлов начинает работать очень медленно.
Большая же заключается в том, что нет практически никаких способов документирования и оформления проекта. Что имеется ввиду?
Во-первых, – хотелось бы иметь возможность распечатать текст так:
- чтобы у страницы были установлены поля удобные для подшивки, включая зеркальные;
- чтобы на каждой странице было указано дата и время последней модификации, номер страницы и общее количество страниц;
- чтобы можно было распечатывать только те страницы, которые необходимы.
Во-вторых, – хотелось бы иметь какой-то способ выделения фрагментов текста – жирным шрифтом и/или цветом, размером шрифта.
В-третьих, – хотелось бы иметь какой-то способ быстрого перемещения по тексту.
Всеми этими свойствами обладает редактор Word_6/97/2000, но есть проблема – при сохранении текста в формате .txt в конце текста сохраняется колонтитул, в котором указаны номер страницы и другая информация, вставленная при оформлении.
И все-таки редактор Word является наилучшим для оформления программ на языке SQL.
Для того чтобы все получилось как надо, следует соблюдать следующие простые правила:
Начало скрипта должно содержать все необходимые операторы "SET" для настройки сессии и оператор "CONNECT" для соединения с базой данных:
Конец скрипта должен содержать оператор "exit;".
Тогда запустив этот скрипт в программе Interactive SQL (или другой подобной, которая имеется в каждой СУБД), будут выполнены все операторы до оператора "exit;".
А раз так, то мы можем не только использовать в редакторе Word колонтитулы, но и создать в конце проекта (после оператора "exit;") дневник изменений и замечаний к проекту, можно также автоматически создавать оглавления проекта, используя средства редактора Word.
Ниже приведен пример такого скрипта (красным жирным шрифтом выделены указанные правила):
SET NAMES WIN1251;
SET TIME ON;
SET STATS OFF;
SET AUTODDL ON;
SET ECHO ON;
CREATE DATABASE '\\AZSRV\D:\Firms\AZ_Design\AZDesign.gdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE=4096 DEFAULT character set win1251;
COMMIT;
/* комментарии к тексту */
CONNECT '\\AZSRV\D:\Firms\AZ_Design\AZDesign.gdb'
USER SYSDBA PASSWORD masterkey CACHE 1000;
COMMIT;
/* Domain definition - описание доменов */
CREATE DOMAIN AZNOTES as VARCHAR(32760) character set WIN1251;
CREATE DOMAIN AZMEMO as BLOB sub_type 1 segment size 128 character set win1251;
CREATE DOMAIN AZBLOB as BLOB sub_type 0 segment size 2048;
CREATE DOMAIN AZLEGEND as CHAR(510) character set WIN1251;
CREATE DOMAIN AZTITLE as CHAR(126) character set WIN1251;
CREATE DOMAIN AZLNAME as CHAR(62) character set WIN1251;
CREATE DOMAIN AZNAMES as CHAR(30) character set WIN1251;
CREATE DOMAIN AZNOTXT as CHAR(16) character set WIN1251;
CREATE DOMAIN CRDB as CHAR(8) character set WIN1251;
CREATE DOMAIN WRKCFG as CHAR(8) character set WIN1251;
CREATE DOMAIN AZCURR as CHAR(3) character set WIN1251;
CREATE DOMAIN AZMONEY as DECIMAL(15,4);
CREATE DOMAIN AZNUMBER as DECIMAL(15,5);
COMMIT;
/* Таблицы для обеспечения контроля за доступом к базе данных */
CREATE TABLE TABLELST (
TBFLDID SmallInt not null PRIMARY KEY,
TBLNAME CHAR(16) character set Win1251 not null,
FLDNAME CHAR(16) character set Win1251 not null,
EVNNAME CHAR(16) character set Win1251 not null, /* +01.06.2000 - событие */
LUSRMODF SmallInt,
LASTMODF Date,
UNIQUE(TBLNAME,FLDNAME,EVNNAME));
COMMIT;
CREATE GENERATOR TABLELST_GEN;
SET GENERATOR TABLELST_GEN TO -32767;
COMMIT;
SET TERM !! ;
CREATE TRIGGER TABLELST_INSGEN FOR TABLELST
ACTIVE BEFORE INSERT AS
BEGIN
NEW.TBFLDID=GEN_ID(TABLELST_GEN,1);
END!!
SET TERM ; !!
COMMIT;
exit;
= = = =
Здесь можно писать любые комментарии, не прибегая
к стандартным для SQL способам оформления коментариев.
<конец скрипта>
Для того, чтобы с минимальными затратами времени текст в редакторе Word превратить в SQL-script нужно немного – сохранить файл в текстовом формате одновременно указав расширение *.sql.
Далее запускаем программу Interactive SQL и выбираем в меню "Run script" –
и выбираем созданный нами скрипт SQL
и на вопрос "Save output a file?" желательно ответить утвердительно, потому что в выходном файле сохраняться и сообщения об ошибках, которые помогут отладить программу.
Дополнительные прелести, которые обеспечивает редактор Word – это закладки и оглавление.
Установив закладки в файле, можно перемещаться практически мгновенно по файлу размером более 5 Мб.
Установив соответствующие стили абзацев можно автоматически собирать оглавление проекта с единственным ограничением – оглавление должно быть в конце проекта, т.е. после оператора "exit;".
Если хотите обсудить публикацию - заполните окно и нажмите кнопку
© 25.10.2001, Архангельский А.Г.
|