Нужна помощь с подключением UDF

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
mad
Сообщения: 3
Зарегистрирован: 03 апр 2006, 12:16

Нужна помощь с подключением UDF

Сообщение mad » 03 апр 2006, 12:27

Сама функция из статей на Ibase.ru.
Подключаю к Firebird 1.5.2. Использую Delphi 2006

function AddA(var iSmall: SmallInt; var iLong: Integer): Integer; cdecl; export;
begin
Result := iSmall + iLong;
end;

Dll называется udftest.dll

В sqlmanagere for Interbase/Firebird

DECLARE EXTERNAL FUNCTION ADD_test_func
SMALLINT,
INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'AddA' MODULE_NAME 'udftest';


Делай запрос.

select AddA(csh_sale,5) from cash;

И получаю ответ...

An error was found in the application program input parameters for the SQL statement.Dynamic SQL Error.
SQL error code = -804.
Function unknown.
ADDA.

Почему....

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 03 апр 2006, 12:51

потому

select ADD_test_func(csh_sale,5) from cash;

mad
Сообщения: 3
Зарегистрирован: 03 апр 2006, 12:16

Сообщение mad » 03 апр 2006, 12:55

Invalid token.
Invalid request BLR at offset 60.
Function ADD_test_func is not defined.
Module name or entrypoint could not be found.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 03 апр 2006, 12:57

dll куда положил? вызывает ли она другие dll? если да, то видны ли эти dll в path? В общем, FAQ...

mad
Сообщения: 3
Зарегистрирован: 03 апр 2006, 12:16

Сообщение mad » 03 апр 2006, 20:51

Лежит в "C:\Program Files\Firebird\Firebird_1_5\UDF\"
Другие библиотеки не запускает..

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 03 апр 2006, 21:25

посмотри конфигурацию udf в firebird.conf

если все ОК, но udf не работает, запускай filemon (sysinternals.com), и мониторь fbserver.exe.
сотри в filemon все, сделай коннект, подготовся выполнить запрос. включи лог filemon, выполни запрос. смотри, куда чего и где ищется.

Ответить