IBProvider v3.5. Поддержка Firebird v2.5.1. Улучшена генерация SQL-запросов. Поддержка параметров в SQL-скриптах
Поддержка параметров в SQL-скриптах
В новой версии IBProvider реализована поддержка параметров в тексте команды, содержащей несколько SQL-запросов. При использовании этой возможности, необходимо учитывать существующие ограничения реализации:
- Поддерживаются только именованные параметры
- Пользователь должен самостоятельно установить описания параметров
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | dim cmd set cmd=createobject( "ADODB.Command" ) cmd.NamedParameters=true cmd.ActiveConnection=cn rem enable interface for the RecordCount support cmd.Properties( "IRowsetScroll" ).value=true cmd.CommandText = _ "select first_name,last_name" & vbCrLf & _ " from employee" & vbCrLf & _ " where emp_no=:emp_no;" & vbCrLf & _ "select p.proj_id,p.proj_name,p.proj_desc" & vbCrLf & _ " from project p join employee_project ep on p.proj_id=ep.proj_id" & vbCrLf & _ " where ep.emp_no=:emp_no;" rem Pete Fisher call cmd.Parameters.Append _ (cmd.CreateParameter( "emp_no" ,adVariant,adParamInput,-1,24)) dim rs set rs=cmd.Execute() rem output: 1 wscript.echo "rs1 size:" &rs.RecordCount set rs=rs.NextRecordset rem output: 2 wscript.echo "rs2 size:" &rs.RecordCount |
В случае возникновения проблем рекомендуем изучить сообщения об ошибках для каждого запроса скрипта. IBProvider формирует подробное описание текста ошибки.
Автоматическая генерация SQL-запросов INSERT, DELETE, UPDATE на основе команды SELECT
Данная функциональность реализована для расширения возможностей работы с обновляемыми множествами, а так же для автоматического создания команд.
В предыдущих выпусках определение колонок первичного ключа и генерация запросов для обратной записи изменений в базу данных поддерживалась только для тривиального запроса вида «select * from MY_TABLE». В новой версии эта тема была радикально улучшена. Теперь провайдер предоставляет расширенную поддержку для SQL-запросов:
- С перечислением колонок: «select col1, col2 t_col2, col3 as t_col3, t.col4, t.col5 t_col5, t.col6 as t_col6 from my_table as t». Имя колонки можно заключать в круглые скобки.
- C выборкой всех колонок таблицы : «select t.* from my_table t»
- С секцией WHERE: «select <columns> from my_table t where <conditions>»
- С секциями PLAN, ORDER BY, FOR UPDATE, ROWS
Существующие ограничения:
- Запрос должен возвращать данные только из одной таблицы
- Список возвращаемых колонок множества может содержать только базовые колонки таблицы и не должен содержать повторения.
- Не поддерживается объединение запросов: «select t1.* from my_table t1 union select t2.* from my_table t2». Однако UNION можно использовать в подзапросе секции WHERE.
- Результирующее множество должно содержать ВСЕ колонки первичного ключа таблицы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | dim cmd set cmd=createobject( "ADODB.Command" ) cmd.NamedParameters=true cmd.ActiveConnection=cn rem enable interface for the updatable recordset cmd.Properties( "IRowsetUpdate" ).value=true cmd.CommandText = _ "select emp_no,first_name,last_name from employee where emp_no=:x" rem Pete Fisher cmd( "x" )=24 dim rs set rs=cmd.Execute() wscript.echo "FIRST_NAME :" &rs( "first_name" ).value wscript.echo "LAST_NAME :" &rs( "last_name" ).value rs( "first_name" ).value =ucase(rs( "first_name" ).value) rs( "last_name" ).value =ucase(rs( "last_name" ).value) call rs.UpdateBatch() set rs=nothing rem ---- wscript. echo "-------------------- [re-execute]" set rs=cmd.execute() wscript.echo "FIRST_NAME :" &rs( "first_name" ).value wscript.echo "LAST_NAME :" &rs( "last_name" ).value rem OUTPUT: FIRST_NAME :Pete rem OUTPUT: LAST_NAME :Fisher rem OUTPUT: -------------------- [re-execute] rem OUTPUT: FIRST_NAME :PETE rem OUTPUT: LAST_NAME :FISHER |
Добавлена поддержка Firebird 2.5.1
Теперь Firebird 2.5.1 используется в качестве основного тестового сервера провайдера. И в новой версии IBProvider-а учитываются его изменения.
все последующие версии в течение года абсолютно БЕСПЛАТНО!