Delphi 3 и создание приложений баз данных

         

Совместимость типов параметров


При описании параметров в БД (оператор DECLARE EXTERNAL FUNCTION) и параметров функций в DLL следует помнить о совместимости типов Object Pascal и InterBase:

Тип InterBase Тип Object Pascal

INTEGER Integer

DOUBLE PRECISION Double

CSTRING PChar

DATE IBDateTime = record

// нужно дополнительное преобразование значений

Days : Integer;

Msec: Cardinal;

end;

Данное соответствие типов верно для случая, когда результат функции передается в базу данных по значению. Для того чтобы результат передавался по значению, необходимо в операторе DECLARE EXTERNAL FUNCTION после слова RETURNS указать слово BY VALUE. В следующем примере объявляется функция DEN типа DATE, содержащаяся в DLL с именем UDF_DLL:

DECLARE EXTERNAL FUNCTION DEN DATE

RETURNS INTEGER BY VALUE

ENTRY_POINT "Den"

MODULE_NAME "udf_dll";

В том случае, если результат работы UDF передается в БД по ссылке, необходимо использовать указатели на соответствующие типы:

InterBase Object Pascal

INTEGER integer

DOUBLE PRECISION double

DATE IBDateTime

Тип PChar всегда передается по ссылке.

Будем использовать только параметры, передаваемые по значению, поскольку вызовы UDF предполагается осуществлять в SQL-операторах типа SELECT, INSERT, UPDATE, DELETE, а эти операторы не будут изменять содержимое параметров.



Содержание раздела