SQL-файл как конструктор (продолжение описания технологии SQL-файл)

Технология SQL-файл представляет из себя набор компонентов (доступных, в определённой мере, для изменения пользователем), не имеющий, однако, особо центрального (сверхярко выраженного среди других по важности) модуля. Наиболее монолитной в данном смысле частью SQL-файл (в Handicraft-SDK) является подпрограмма SqlCatPP.exe. Все части, в определённой степени, полезны и необходимы. Ежели попытаться составить список всего клиентского набора (всё, что не на стороне SQL-сервера), то вместе с базовыми системными (не предусматривающими, как правило, модификации со стороны пользователя) программами, получится примерно следующий перечень составляющих элементов клиентского ядра (см. ниже: I, II, III).

Наиболее точное определение замысла SQL-файл можно обозначить как настраиваемый и расширяемый конструктор SQL-проектов. Важным является то, как SQL располагается в файлах: в соответствующей подпапке, с должными сеттинг-ами, во встроенном в определённый порядок обработки SQL-файле. Файл должен лежать как можно “правильнее”, однако и код, сохраняемый в нём (объект БД и прочее) получает определённые преимущества. Сам же конструктор тоже подвластен для изменения пользователем. Существует возможность исправления любой составляющей конструктора, заимствованной из Handicraft-SDK. (Исходники EXE также присутствуют в пакете: “HandicraftSDK\Auxiliary programs (sources)”). Конструктор становится понятным и полезным, когда в него начинаешь “играть” (т. е. в разной степени применять). Доступны как минимальные, так и более сложные примеры.

I. Компоненты SQL-файл из пакета Handicraft-SDK:

— Утилита трансляции скриптов $SQLTRANS (CMD);
— Препроцессор-конкатенатор скриптов SqlCatPP (EXE);
— Прочие CMD: $SQLUPLOAD, $SQL, $SQLCON, $SQLTOCSVEXP;
— Прочие EXE: SqlToCsvExport, ConfirmationPause, TypeInColor;

— Плагин Far Manager CmdCpAuto для открытия CMD в нужной кодировке;
— Макросы LUA для настройки соответствующего поведения FAR-а, а так же другие инструкции от слов интеграция+оболочка (“CMD-utilities\Shell\Integration\**”);

Сеттинг-и в шаблонах SQL-проектов, как многочисленные примеры файлов “$sql_settings.cmd” (а так же “$sql_settings.sql”);
— Простые и сложные сценарии-команды в виде многочисленных примеров; (новый SQL-проект, как правило, заимствует большинство своих CMD);

— Вариант простого расширения SQL (т. н. “усиленный T-SQL”) со стороны библиотеки SQLAUX, в виде набора дополнительных ключевых слов-расширений (от автора SQL-файл и SQLAUX);
— Хэлпер-объекты T-SQL из пространства “AUX:…”: скалярные функции (137 шт.), табличные функции (3 шт.), хранимые процедуры (28 шт.);

— Набор работающих примеров/шаблонов разной степени сложности, с приложением бекап-а (BAK-файл) и образа (MDF+LDF) тестовой БД (“TEST”).

Описательные файлы псевдо-заголовков объектов SQLAUX а так же доступных слов/типов/констант расширенного SQL смотрите в каталоге “HandicraftSDK\SQL\SQLAUX\API (headers)”. Возможна минимальная зависимость от SQLAUX, без обращения к её программатикам в БД, а лишь использование отдельных её “слов” (переменные “$(…_AUX)”).

II. Базовая (не изменяемая) часть SQL-файл (системные зависимости):

SQLCMD как базовый транслятор предварительно обработанного скрипта (с поддержкой разделителя/повторителя батчей GO, обработкой директив “:SetVar …”, “:r …” и т. п., раскрытием переменных/констант в SQL “$(<ПеременнаяСреды>)”). Данная программа MS вызывается из: $SQLTRANS, $SQLUPLOAD, $SQL, $SQLCON.
BCP — вызывается из $SQLUPLOAD;
DOTNET 4.0 — зависимость для SqlCatPP.exe, SqlToCsvExport.exe, ConfirmationPause.exe, TypeInColor.exe;

Far Manager 3 — SQL-файл IDE — основной командный пульт (доступен, так же, и Windows Explorer), редактор с подкраской синтаксиса (SQL, CMD, TXT), поддержка плагин-ов (CmdCpAuto.dll) и макросов LUA (“CMD-utilities\Shell\Integration(\RU)”);

Командный процессор CMD (т. н. “legacy”, т. е. унаследованный в ОС Windows, не подвержен проблеме изменения версий).

III. Примеры и т.п.

Ниже приводится пример одного из перечней доступных “слов” (из файла-описателя “SQLAUX\API (headers)#SQL_extensions.AUX.sql”).
См. так же: “#Constants.AUX.sql”, “#Data_types.AUX.sql” (другие подобные перечни слов с комментариями).

Насчёт потребности в т. н. “обёртке основного блока” для T-SQL, представленной в SQLAUX словами “$(BEGIN_AUX)” и “$(END_AUX)”, можно взглянуть (прочитать как предисловие) на следующую заметку с SQL.RU: https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331783&msg=22248841
Два занятных вопроса (SQL.RU, от 16 декабря 2020 г., форум – Microsoft SQL Server).

СЛОВА ИЗ “#SQL_extensions.AUX.sql” (ПЕРЕЧЕНЬ-ПРИМЕР):
[[
NOP_AUX, LOOP_AUX, TRUE_AUX, FALSE_AUX, YES_AUX, NO_AUX, SUCCESS_AUX, FAILURE_AUX, FLOAT_1_AUX,

BEGIN_AUX, BEGIN_WITH_XACT_ABORT_ON_AUX, BEGIN_WITH_XACT_ABORT_OFF_AUX, BEGIN_WITHOUT_XACT_ABORT_AUX, END_AUX, BEGIN_TRANSACTION_AUX, COMMIT_TRANSACTION_AUX, COMMIT_OPEN_LT_AUX,

ROLLBACK_TRANSACTION_AUX, ROLLBACK_OPEN_LT_AUX, ROLLBACK_UNCOMMITTABLE_LT_AUX,

INITIAL_TRANCOUNT_AUX, IS_IN_OPEN_LT_AUX, RESET_OPEN_LT_FLAG_AUX,

IS_XACT_ABORT_ON_AUX, IS_NUMERIC_ROUNDABORT_ON_AUX, IS_CONCAT_NULL_YIELDS_NULL_ON_AUX, IS_ANSI_NULL_DFLT_OFF_ON_AUX, IS_ANSI_NULL_DFLT_ON_ON_AUX, IS_NOCOUNT_ON_AUX, IS_QUOTED_IDENTIFIER_ON_AUX, IS_ARITHIGNORE_ON_AUX, IS_ARITHABORT_ON_AUX, IS_ANSI_NULLS_ON_AUX, IS_ANSI_PADDING_ON_AUX, IS_ANSI_WARNING_ON_AUX, IS_CURSOR_CLOSE_ON_COMMIT_ON_AUX, IS_IMPLICIT_TRANSACTIONS_ON_AUX, IS_DISABLE_DEF_CNST_CHK_ON_AUX,

XACT_ABORT_AUX, NUMERIC_ROUNDABORT_AUX, CONCAT_NULL_YIELDS_NULL_AUX, ANSI_NULL_DFLT_OFF_AUX, ANSI_NULL_DFLT_ON_AUX, NOCOUNT_AUX, QUOTED_IDENTIFIER_AUX, ARITHIGNORE_AUX, ARITHABORT_AUX, ANSI_NULLS_AUX, ANSI_PADDING_AUX, ANSI_WARNING_AUX, CURSOR_CLOSE_ON_COMMIT_AUX, IMPLICIT_TRANSACTIONS_AUX, DISABLE_DEF_CNST_CHK_AUX,

TEST_IMPLEMENTATION_AUX, BEGIN_TEST_AUX, END_TEST_AUX, BEGIN_NONTEST_AUX, END_NONTEST_AUX,
META_IMPLEMENTATION_AUX, BEGIN_META_AUX, END_META_AUX, BEGIN_NONMETA_AUX, END_NONMETA_AUX,

LAQUO_AUX, RAQUO_AUX, LANG_AUX, RANG_AUX, LSQM_AUX, RSQM_AUX, LDQUO_AUX, RDQUO_AUX, BULL_AUX, MIDDOT_AUX, PLUSMN_AUX, HELLIP_AUX, DEG_AUX, SECT_AUX, COPY_AUX, REG_AUX, MDASH_AUX, NDASH_AUX, CR_AUX, LF_AUX, CR_LF_AUX, NL_AUX, NLNL_AUX,

LARROW_AUX, RARROW_AUX, BACKSLASH_AUX, _BACKSLASH_AUX,

NewLineAndErrorMessage_AUX, AppendErrorMessageLine_AUX, AppendScriptLine_AUX
]]

Автор блог-а

Китаев Сергей Юрьевич
Автор ресурса Handicraft-CODE
https://handicraft.remelias.ru/

Leave a Reply

Your email address will not be published. Required fields are marked *