Publish date: 2001-08-30

Support of IN-OUT parameters, arrays …

Common changes

1. New initialization property free_threading is used for decision of problems of test of connection in «Data Link» dialogue.

2. The change of position of cursor of sequential access with the process of error handling of positioning through bookmarks was detected.

3. new! Support of «CREATE DATABASE …» enquiry. It enquiry is possible for direct interaction of provider only, because OLE DB specification do not allow execution of command for data source without initialization.

4. new! Support of «DROP DATABASE» SQL query.

5. new! Full IN-OUT parameters support.

6. The leakage of resources in case of breakdown of execution of enquiry with parameters was precluded.

7. Support of convertion the type VT_CY to the types DBTYPE_I8 and DBTYPE_UI8.

8. Error with zero column of bookmarks. The arguments sizeof(LONG) and DBTYPE_I4 was confused. It was interpreted as DBTYPE_R4 and 3 bytes. It don't make the crash, because the specification demand equalize it to a size divisible by number of digits of processor.

9. The problems of reading BLOB fields via ADO Express are fixed. Thanks Juris Gekiss for nudging to the decision of this problem and composition of the list of other errors of provider.

10. The check of descriptions of parameters which user directly defined (ADODB.Command.Parameters.Append) was optimized. The main point is binary search in sorted table of types names.

Support of arrays

  • The OLE DB arrays present as SAFEARRAY. It is the standard method of storage of arrays in Visual Basic.
  • IBProvider convert the elements of arrays to Visual Basic compatible types automatically, since SAFEARRAY can't keep information about types different from VARIANT compatible types. The new properties of connection string and rowset («array_vt_type«) are answered for this conversion. Default value is true.

If you transfer arrays as IN parameter then information about names of table and column for inserting of array descriptor are needed. The IB API function isc_dsql_describe_bind don't return descriptions of IN parameters. The Firebird developers understood sense of this problem, and maybe they will correct it, but for IB4/IB5 users it senselessly. Therefore the method of parameters presentation in enquiry text was extended. Namely, you may define parameters as:

  • ?
  • :param_name
  • ?.table_name.column_name
  • :param_name.table_name.column_name

Where table_name and column_name can be quoted names of third dialect. Second and third parts of parameter are used for inner work, and in the case of automatic generation of the list of parameters (ADODB.Command.Parameters.Refresh) aren't shown outside.
During «INSERT …» or «UPDATE …» commands execution the error will be arisen if additional information has error.

IBProvider allow to write subset of elements of array.

You must keep in mind that «UPDATE …» command write over the old data.

The CHAR-elements of array are kept as usually, with terminal spaces. IBProvider returns the rtrim(element of array).

VARCHAR is kept as C-string, i.e. null-terminal string. IBProvider don't use other specific symbols (e.g. ‘\n’) for marking the end of string, therefore the strings with 0-symbol aren't kept in arrays.

InterBase don’t allow to use arrays as arguments of stored procedures.

In ADO Express opening of set containing arrays lead to AV. It arise before loading.


Publish date: 2001-08-30. Copyright: IBProvider. This material may be reproduced on other web sites, without written permission but link https://www.ibprovider.com/eng required.