Правильная ссылка на эту страницу
http://az-design.ru/Support/DataBase/SQL/sql001.shtml

Как написать 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, Архангельский А.Г.

Оглавление
Главная страница




Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:44 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/DataBase/SQL/sql001.shtml