Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Ошибка в UDF   Найти похожие ветки 

 
DmitryMN   (2004-08-11 15:27) [0]

Добрый день, Мастера.
Вот какая у меня проблема:

Есть функция UDF:

function GetDecMonth(month: pchar):integer; cdecl; export;

function GetDecMonth(month: pchar):integer;
var
   m: integer;
begin

// чего-то там делает

  Result := m;
end;

Засовываю ее в MyDLL.dll, dll кладу в Firebird\udf
и регистрирую функцию:

DECLARE EXTERNAL FUNCTION "GetDecMonth"
   CSTRING(2)
RETURNS SMALLINT BY VALUE
ENTRY_POINT "GetDecMonth" MODULE_NAME "MyDLL.dll"

Далее при вызове этой функции:

select GetDecMonth(<str_field>) from <table>

выдается ошибка:

Invalid token.
invalid request BLR at offset 60.
function GETDECMONTH is not defined.
module name or entrypoint could not be found.

Что бы это могло значить?


 
Sergey13 ©   (2004-08-11 15:35) [1]

может просто сервак перезапустить?


 
jack128 ©   (2004-08-11 15:37) [2]

директива exports где? Учти имена функций в длл - регистрозависимы..


 
Жук ©   (2004-08-11 15:38) [3]

Может (<str_field>) не ндравится ?


 
Digitman ©   (2004-08-11 15:48) [4]


> DmitryMN


библиотека не экспортирует ф-цию с указ.именем ... оттого, вероятно, и проблемы


 
Соловьев ©   (2004-08-11 15:53) [5]

http://ibase.ru/devinfo/udf_ok.htm


 
DmitryMN   (2004-08-11 15:55) [6]

В библиотеке  указано:
exports
GetDecMonth;

Я уже и с рабочими исходниками сверял - вроде все записано верно.


 
Desdechado ©   (2004-08-11 18:23) [7]

значит, библиотека не доступна серверу
SMALLINT, кстати, это не INTEGER


 
Digitman ©   (2004-08-12 08:44) [8]


> DmitryMN   (11.08.04 15:55) [6]


при выполнении запроса библиотека будет загружена в АП серверного процесса и "отпущена" лишь при закрытии всех клиентских сеансов, использующих этот запрос ... попытайся удалить файл библиотеки после неудачного выполнения этого запроса, но до завершения сеанса.. если файл удалить не удастся, это будет подтверждением того, что библиотека сервером найдена

при DECLARE EXTERNAL FUNCTION "GetDecMonth" сервер внесет имя ф-ции в таблицу RDB$FUNCTIONS "как есть", т.е. без преобразования к верхнему регистру символов .. в этом случае обращение к ф-ции по ее имени из запроса/ХП/триггера так же должно быть заключено в кавычки, иначе ф-ция не будет найдена в сервером в RDB$FUNCTIONS, что вероятно и происходит в этом случае

общее правило таково : если при декларации ф-ции ее имя заключено в кавычки, то и все послед.обращения к ф-ции должны быть заключены в кавычки, в противном случае кавычки не должни присутствовать ни при декларации, ни при последующих обращениях



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
1-1093033660
HydraMarat
2004-08-21 00:27
2004.09.05
Поток загружает процессор на 100%


4-1090405878
sashuly
2004-07-21 14:31
2004.09.05
отлов русских букв с OnKeyDown


6-1088698770
DelphiN!
2004-07-01 20:19
2004.09.05
как проверить соединение с интернетом на выделенной линии?


1-1092855479
Vemer
2004-08-18 22:57
2004.09.05
Как отключить некоторые предупреждения.


11-1080427828
Deimos
2004-03-28 01:50
2004.09.05
KOL + TASM = ???