Дата публикации: 16.11.2010

Хотите задействовать выполнение SQL-скриптов в своих программах и тратить меньше времени на утомительное кодирование?

Хотите в одной команде создать таблицу, генератор, триггер, добавить данные в таблицу, сделать выборку и потом все это удалить? Теперь это возможно с новым IBProvider!

В новом IBProvider v.3.3.0.11117 реализована возможность выполнения команды с несколькими SQL-запросами (SQL-скрипты). Например:

set autoddl on;
set transaction;
create generator GEN_ID_TEST_TABLE;
create table TEST_TABLE (ID INTEGER NOT NULL PRIMARY KEY,TEXT BLOB SUB_TYPE TEXT);
create trigger BI_TEST_TABLE for TEST_TABLE
 before insert
 as
 begin
  if(NEW.ID IS NULL) then NEW.ID=GEN_ID(GEN_ID_TEST_TABLE,1);
 end;
insert into TEST_TABLE (text) values('record 1');
insert into TEST_TABLE (text) values('record 2');
set term !!;
select * from TEST_TABLE!!
set terminator ;!!
TEST_TABLE;
set autoddl off;
drop table TEST_TABLE;
drop generator GEN_ID_TEST_TABLE;
commit;

Добавлена поддержка специальных команд:

  • SET {TERM|TERMINATOR} <new_stmt_terminator_string>. Добавлено для совместимости с ISQL. Новый терминатор действителен только в рамках текущего скрипта.
  • SET AUTODDL {ON|OFF}. Если включено, то последующие DDL команды будут подтверждаться (commit) автоматически. Задаваемый режим действует только в рамках текущего скрипта. Если в скрипте отсутствует данная инструкция, то начальное состояние определяется значением свойства auto_commit_ddl.

Поддерживаются ли запросы, возвращающие данные клиенту?

Если в скрипте встречается запрос, возвращающий множество, то IBProvider осуществит закачку всех рядов (включая BLOB-поля и массивы) на клиента. В случае необходимости, для хранения больших множеств будут задействованы временные файлы. После завершения выполнения команды вы можете получить доступ к загруженным данным.

Что произойдет, если в скрипте встретятся несколько запросов, возвращающих данные?

Провайдер предоставляет возможность перебирать результаты выполнения каждого запроса.

При работе с Firebird/InterBase через ADODB для этого следует использовать методом Recordset.NextRecordset. Если запрос завершился по ошибке, то Recordset.NextRecordset выбросит исключение, которое можно перехватить и обработать. Если запрос не возвращает множество, то свойство Recordset.State будет равным нулю (adStateClosed). После перебора всех результатов, Recordset.NextRecordset вернет Nothing.

При работе с Firebird/InterBase через ADO.Net для загрузки данных из нескольких множеств следует воспользоваться методом OleDbDataAdater.Fill(dataset).

При работе с Firebird/InterBase через OLE DB интерфейсы, следует запросить результат работы команды в виде объекта с интерфейсом IMultipleResults.

Какие ограничения существуют на работу с SQL-скриптами?

На текущий момент, IBProvider нельзя задавать параметры команд для SQL-скриптов. Данная возможность появится в следующих выпусках.

Можно ли продолжить выполнение скрипта, если произошла ошибка в одном из запросов?

Да это возможно через свойство инициализации. По-умолчанию, если возникает ошибка, то IBProvider остановит выполнение команды. Это поведение можно изменить, установив новое свойство инициализации и команды multi_stmts_exec_rules равным 1. В этом случае провайдер сохранит описание ошибки и продолжит выполнение запросов.

3 Преимущества, которые вы получите, если воспользуетесь новым IBProvider!

1. Вы сможете встроить выполнение SQL-скриптов во все свои программы

Теперь стало очень легко реализовать выполнение SQL-скриптов в отдельном окне вашего приложения. Просто добавьте на форму Memo-поле и кнопку Execute и передайте текст скрипта в IBProvider. Остальное сделает наш драйвер:

  • Разберет запросы на DDL/DML
  • Подготовит и выполнит ваши команды
  • Передаст вам текст сообщения в случае ошибки в запросе или в процессе выполнения
  • Вернет результирующие множества, полученные в результате выполнения команд. Все что вам останется, просто вывести загруженные данные в Grid (таблицу)

Эта функция отлично подойдет, для внесения исправлений в рабочую систему, когда под рукой есть только компьютер конечного пользователя и нет полноценного редактора БД. Вы можете снабдить этой функцией все свои программы. Особенно это подойдет для тех, кто любит дорабатывать систему уже на рабочей базе данных.

2. Вы сможете писать заметно меньше кода

Раньше необходимо было для каждой SQL-инструкции создавать и настраивать отдельную команду. Теперь всю логику функции работы с БД можно реализовать в одном месте, написав скрипт из нескольких SQL-команд. Это позволит Вам значительно сократить время на написание приложений.

3. Вы сможете вынести администрирование баз Firebird и InterBase на новый уровень

Наборы скриптов для администрирования БД (переносы, merge, репликация) — все это стало гораздо проще. Вы можете выполнять SQL-команды пачками прямо из скриптов на VBScript, на любом компьютере под управлением Windows.

Сэкономьте себе кучу времени — назначьте выполнение таких скриптов по расписанию и, получайте, к примеру, отчеты о выполнении скриптов по электронной почте.




Внимание: Помимо новейшего драйвера, вы ГАРАНТИРОВАНО получите все последующие версии в течение года абсолютно БЕСПЛАТНО!

Дата публикации: 16.11.2010. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.