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

IBProvider v3.8.2. А ваши компоненты доступа готовы для Firebird v3?

Мы продолжаем активно добавлять в IBProvider новую функциональность СУБД Firebird 3.

Напомним, что еще 2 месяца назад мы добавили поддержку типа данных BOOLEAN из Firebird 3. В новой версии IBProvider Professional добавлена поддержка инструкции PACKAGE.

Отныне вы сможете привести в порядок огромную кучу процедур и функций БД и сгруппировать их по смыслу в отдельных модулях (PACKAGE). Такая организация значительно упростит понимание и облегчит сопровождение SQL-кода.

Firebird 3 — инструкция PACKAGE

C IBProvider вы можете использовать в своих программах следующие возможности PACKAGE:

  • Выполнение DDL запросов для создания, модификации и удаления PACKAGE.
  • Вызов хранимых процедур из PACKAGE в запросах «exec SP …», «{call SP …}»

Пример на VBScript

option explicit
dim cn
set cn=createobject("ADODB.Connection")

cn.Provider="LCPI.IBProvider.3"
cn.Properties("location")="vxpsp2-fb30:e:\database\ibp_test_fb30_d3.gdb"
cn.Properties("user id")="sysdba"
cn.Properties("password")="masterkey"
cn.Properties("dbclient_library")="fbclient_30.dll"
cn.Properties("ctype")="win1251" ' This is RUSSIAN code page!
cn.Properties("auto_commit")=true
cn.Properties("exec_sp_named_param")=true

call cn.Open("")

wscript.echo "Provider Version: "&cn.Properties("Provider Version").Value
wscript.echo "DBMS Name       : "&cn.Properties("DBMS Name").Value
wscript.echo "DBMS Version    : "&cn.Properties("DBMS Version").Value

wscript.echo ""

'----------------
dim cmd
dim rs

set cmd=createobject("ADODB.Command")

cmd.ActiveConnection=cn

'----------------
wscript.echo "create packages"

cmd.CommandText = _
  "recreate package test_pack1 as"&vbCrLf& _
  "begin"&vbCrLf& _
  " procedure proc(in1 integer)"&vbCrLf& _
  " returns (out1 integer);"&vbCrLf& _
  "end;"&vbCrLf& _
  ""&vbCrLf& _
  "recreate package body test_pack1 as"&vbCrLf& _
  "begin"&vbCrLf& _
  " procedure proc(in1 integer)"&vbCrLf& _
  " returns (out1 integer)"&vbCrLf& _
  " as"&vbCrLf& _
  " begin"&vbCrLf& _
  "  out1=-in1;"&vbCrLf& _
  " end;"&vbCrLf& _
  "end;"&vbCrLf& _
  ""&vbCrLf& _
  "recreate package test_pack2 as"&vbCrLf& _
  "begin"&vbCrLf& _
  " procedure proc(in1_str varchar(64) character set ascii)"&vbCrLf& _
  " returns (out1_str varchar(64) character set ascii);"&vbCrLf& _
  "end;"&vbCrLf& _
  ""&vbCrLf& _
  "recreate package body test_pack2 as"&vbCrLf& _
  "begin"&vbCrLf& _
  " procedure proc(in1_str varchar(64) character set ascii)"&vbCrLf& _
  " returns (out1_str varchar(64) character set ascii)"&vbCrLf& _
  " as"&vbCrLf& _
  " begin"&vbCrLf& _
  "  out1_str=upper(in1_str);"&vbCrLf& _
  "  suspend;"&vbCrLf& _
  " end;"&vbCrLf& _
  "end;"&vbCrLf& _
  ""&vbCrLf& _
  "recreate procedure proc"&vbCrLf& _
  "returns (x integer)"&vbCrLf& _
  "as"&vbCrLf& _
  "begin"&vbCrLf& _
  "x=1234;"&vbCrLf& _
  "end;"

set rs=cmd.Execute()

'check errors
while(not (rs is nothing))
 set rs=rs.NextRecordset()
wend

wscript.echo ""

'----------------
wscript.echo "exec test_pack1.proc"

cmd.CommandText="exec test_pack1.proc"

cmd("in1")=2

call cmd.Execute()

wscript.echo "out1: "&cstr(cmd("out1").value)

wscript.echo ""

'----------------
wscript.echo "exec test_pack2.proc"

cmd.CommandText="exec test_pack2.proc"

cmd("in1_str")="qwerty"

set rs=cmd.Execute()

wscript.echo "out1_str: """&rs("out1_str").value&""""

wscript.echo ""

set rs=nothing

'----------------
wscript.echo "exec proc"

cmd.CommandText="exec proc"

call cmd.Parameters.Refresh()

call cmd.Execute()

wscript.echo "x: "&cstr(cmd("x").value)

wscript.echo ""

'----------------
wscript.echo "OK"

Результат работы:

Инструкция PACKAGE в Firebird 3

Новая версия IBProvider стала еще стабильнее и быстрее

С каждым новым релизом IBProvider мы увеличиваем количество тестов и комбинаций, входящих в нашу тестовую систему.

В новом релизе была исправлена ошибка вида:

BUG-CHECK at [TIBP_RW_TableStorage_Base::RowDataDpmBlock_Verification] [003]. Possible reason: Wrong DPM block [000000000490:0000] size: 1692. Wait size: 16.

Проблема проявляется на наборах рядов, размер записи которых больше 4K, при интенсивном изменении значений колонок. Ошибка присутствует во всех сборках IBProvider v3, начиная с RC5. Исправление доступно начиная с версии 3.8.1.

В процессе реализации новой функциональности в IBProvider, обязательный этап – предварительный рефакторинг существующего кода. В этот раз удалось сократить количество служебных запросов к серверу в процессе подготовки нестандартных запросов для выполнения хранимых процедур: «exec SP …», «{call SP …}»

В ближайших планах перевод 64-битных сборок IBProvider на Visual Studio 2010.

В итоге

Год назад мы подошли к финишной черте третьей версии IBProvider. Потом мы пересекли её и, не останавливаясь ни на один день, двинулись дальше. Сейчас мы предлагаем вам поддержку всей линейки серверов Firebird и InterBase, а так же функциональность, о которой не мечтали в самых смелых мечтах. Спасибо всем, кто остался с нами и присоединился к нам совсем недавно.

Новый IBProvider Professional 3.8.2 ГОТОВ для работы с Firebird 3

А ваши программы готовы?




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


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