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"
Результат работы:
Новая версия IBProvider стала еще стабильнее и быстрее
С каждым новым релизом IBProvider мы увеличиваем количество тестов и комбинаций, входящих в нашу тестовую систему.
В новом релизе была исправлена ошибка вида:
Проблема проявляется на наборах рядов, размер записи которых больше 4K, при интенсивном изменении значений колонок. Ошибка присутствует во всех сборках IBProvider v3, начиная с RC5. Исправление доступно начиная с версии 3.8.1.
В процессе реализации новой функциональности в IBProvider, обязательный этап – предварительный рефакторинг существующего кода. В этот раз удалось сократить количество служебных запросов к серверу в процессе подготовки нестандартных запросов для выполнения хранимых процедур: «exec SP …», «{call SP …}»
В ближайших планах перевод 64-битных сборок IBProvider на Visual Studio 2010.
В итоге
Год назад мы подошли к финишной черте третьей версии IBProvider. Потом мы пересекли её и, не останавливаясь ни на один день, двинулись дальше. Сейчас мы предлагаем вам поддержку всей линейки серверов Firebird и InterBase, а так же функциональность, о которой не мечтали в самых смелых мечтах. Спасибо всем, кто остался с нами и присоединился к нам совсем недавно.