Текущий архив: 2003.11.13;
Скачать: CL | DM;
Внизподскажите с UDF Найти похожие ветки
← →
Vlad (2003-10-16 13:03) [0]Господа, выручайте. Первый раз столкнулся с UDF, до этого никогда не использовал, и вот уже час бьюсь над проблемой. Короче говоря поставил Yaffil Classic Server. В папке UDF лежат файлы ib_udf.dll и скрипт ib_udf.sql. В IBExpert запускаю этот скрипт, он создает мне функции, вроде нормально. Но сами функции не работают, т.е. при попытке использовать их в sql предложениях возникает ошибка: "Invalid data type, length or value. Function SubStr could not be matched". Такая же ошибка, если файл ib_util.dll убрать с диска совсем. Такое впечатление, что Yaffil не находит эту dll.
Подозреваю, что проблема пустяковая, но как ее бороть - не пойму. Подскажите, плз.
Заранее спасибо.
← →
Danilka (2003-10-16 13:08) [1]Vlad © (16.10.03 13:03)
перезапусти сервер
← →
Vlad (2003-10-16 13:25) [2]>Danilka © (16.10.03 13:08) [1]
Перезапустил, не помогло :(
← →
Johnmen (2003-10-16 13:44) [3]1. UDF - в нужную папку
2. Имена ф-ий в декларации регистрозависимы.
← →
Vlad (2003-10-16 13:49) [4]>Johnmen © (16.10.03 13:44) [3]
UDF - лежит в папке с:\Program Files\Yaffil\UDF\, т.е. там, куда его инсталлятор положил. Я собственно ничего не менял. Имена функций были прописаны в скрипте, к-рый прилагался к этой библиотеке (ib_util.sql), думаю, что в нужном регистре. Я просто запустил этот скрипт.
Но не работает :(
← →
Val (2003-10-16 13:49) [5]>Danilka © (16.10.03 13:08) [1]
firebird у меня без перезапуска нормально их увидел.
← →
Danilka (2003-10-16 13:52) [6][5] Val © (16.10.03 13:49)
угу, у меня тоже. :))
зачем я только раньше его перезапускал, балбес. :))
← →
Val (2003-10-16 13:53) [7]>Vlad © (16.10.03 13:49) [4]
Имена функций были прописаны в скрипте, к-рый прилагался к этой библиотеке (ib_util.sql), думаю, что в нужном регистре. Я просто запустил этот скрипт.
думаю, что Johnmen © (16.10.03 13:44) [3]
имел ввиду, что в своем тексте sql вы должны писать их в таком же регистре, как они объявлены.
← →
mOOx_ (2003-10-16 13:55) [8]Где-то читал, что длл с УДФ должны лежать в папке
C:\Program Files\Firebird\UDF
Эту папку можно как-то переопределить, но помоему, проще все кинуть туда. Попробуй.
← →
Val (2003-10-16 13:59) [9]>mOOx_ © (16.10.03 13:55) [8]
у него Yaffil
← →
Vlad (2003-10-16 14:00) [10]Val © (16.10.03 13:53) [7]
думаю, что Johnmen © (16.10.03 13:44) [3]
имел ввиду, что в своем тексте sql вы должны писать их в таком же регистре, как они объявлены.
Все равно не помогает
>mOOx_ © (16.10.03 13:55) [8]
Ну так у меня таже папка, которую ты назвал, только вместо FireBird - Yaffil, что по-моему справедливо :)
Может нужны какие-то доп. настройки, напр. в переменной PATH или еще что-нибудь ?
← →
Val (2003-10-16 14:02) [11]>Vlad © (16.10.03 14:00) [10]
проверил, такая ошибка возникает при неверном использовании параметров функции.
ваш запрос, пожалуйста.
← →
Johnmen (2003-10-16 14:04) [12]М.б. скрипт неверен ?
Д.б. так
DECLARE EXTERNAL FUNCTION substr
CSTRING(80), SMALLINT, SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT "IB_UDF_substr" MODULE_NAME "ib_udf";
← →
Vlad (2003-10-16 14:06) [13]Val © (16.10.03 14:02) [11]
Да все что угодно, напр:
select SUBSTR("abcdefg",1,1) from RDB$Database
Johnmen © (16.10.03 14:04) [12]
Скрипт один-в-один сходится.
← →
mOOx_ (2003-10-16 14:07) [14]Сори :). Забыл что Yaffil тоже из того же семейства :). Кстати, да. Запросик бы глянуть.
← →
Val (2003-10-16 14:10) [15]м.б. стоит зарегистрировать dll с помощью regsvr32?
← →
Vlad (2003-10-16 14:12) [16]>Val © (16.10.03 14:10) [15]
Это ж не COM-объект, зачем его регистрить ?
← →
Danilka (2003-10-16 14:13) [17][13] Vlad © (16.10.03 14:06)
интересно, а почему она ругается "SubStr", а не "SUBSTR", как в запросе и не "substr" как в скрипте?
может в яффи есть такая встроенная функция?
у меня, кстати, запрос прокатил без проблем.
← →
Val (2003-10-16 14:14) [18]>Vlad © (16.10.03 14:12) [16]
мда.а перенос в системные каталоги пробовали?
← →
Vlad (2003-10-16 14:17) [19]Может кто нибудь посмотреть, у кого установлен IB/FB/YA, описание переменной PATH, там должно быть что-нибудь по этому поводу ?
Danilka © (16.10.03 14:13) [17]
Это я неверно написал. В тексте ошибки была в верхнем регистре.
С другими ф-циями тоже самое
Val © (16.10.03 14:14) [18]
Пробовал. Не помогает
← →
Danilka (2003-10-16 14:20) [20][19] Vlad © (16.10.03 14:17)
у меня в path только путь к каталогу bin.
но у меня фиребирд 1.5
и все работает, что скрип для substr-а, что запрос
← →
Val (2003-10-16 14:23) [21]у меня тоже к bin, но я сам его добавлял когда-то, это точно.
← →
Vlad (2003-10-16 14:24) [22]Добавил путь к BIN - не помогло.
← →
Val (2003-10-16 14:28) [23]а что возвращает запрос по SUBSTR:
SELECT a.RDB$FUNCTION_NAME, b.RDB$ARGUMENT_POSITION,
b.RDB$MECHANISM, b.RDB$FIELD_TYPE,
b.RDB$FIELD_SCALE , b.RDB$FIELD_LENGTH, b.RDB$FIELD_SUB_TYPE
FROM RDB$FUNCTIONS a, RDB$FUNCTION_ARGUMENTS b
WHERE (a.RDB$FUNCTION_NAME = b.RDB$FUNCTION_NAME) and
((a.RDB$SYSTEM_FLAG = 0) OR (a.RDB$SYSTEM_FLAG IS NULL))
and (b.RDB$ARGUMENT_POSITION <> a.RDB$RETURN_ARGUMENT)
and a.RDB$FUNCTION_NAME = "SUBSTR"
← →
Vlad (2003-10-16 14:32) [24]>Val © (16.10.03 14:28) [23]
Запрос вернул три строчки с именем функции SUBSTR, ну и еще параметры (пока не разобрался, что означают)
← →
Val (2003-10-16 14:35) [25]>Vlad © (16.10.03 14:32) [24]
этот запрос определяет входные параметры данной функции, а вот на результаты интересно бы посмотреть, для сравнения.
← →
Vlad (2003-10-16 14:38) [26]Поля в том порядке, к-ром ты перечислил.
Если картинка не съедет, то вот так:
SUBSTR 1 1 40 0 80 null
SUBSTR 2 1 7 0 2 null
SUBSTR 3 1 7 0 2 null
← →
Val (2003-10-16 14:41) [27]Все совпадает, нормально функция в базу занеслась. Вариантов, честно говоря, нет :(
← →
Vlad (2003-10-16 14:44) [28]При стандартной установке gds32.dll в каком каталоге должна находится, в BIN или в SYSTEM(32) ?
У меня почему-то в обеих местах присутствует.
← →
Danilka (2003-10-16 14:46) [29][28] Vlad © (16.10.03 14:44)
Вообще-то эту библиотеку юзает клиент.
Можешь положить ее в папку с клиентом.
← →
Val (2003-10-16 14:48) [30]у меня нет ее в бине.
← →
Vlad (2003-10-16 14:54) [31]Мужики, во дела !
Из Дельфей попробовал - работает!
Из IBExpert никак!
Что за фигня ???
← →
Val (2003-10-16 14:57) [32]>Vlad © (16.10.03 14:54) [31]
ну знаете ли :) надо было вообще-то из консоли пробовать :(
← →
Vlad (2003-10-16 15:07) [33]А че с Expert"ом делать то ? Выкинуть чтоли ? :)))
Ладно, мужики, всем спасибо. Это я балбес. Надо было раньше догадаться из Дельфей попробовать.
← →
Danilka (2003-10-16 15:09) [34][31] Vlad © (16.10.03 14:54)
странно, конечно, а у тебя в каталоге с экспертом есть эта самая gds32.dll?
может там у тебя библиотека от IB или FB а не от дятла?
в любом случае, попробуй в каталог с экспертом записать эту библиотеку из каталога Yaffi\bin
← →
Vlad (2003-10-16 15:14) [35]>Danilka © (16.10.03 15:09) [34]
Нет, FB и IB я никогда не ставил.
А gds32.dll лежит в bin и system32. Вот только какой из них он использует не знаю....
Кстати, поместил в папку с самим Expert"ом - не помогло.
← →
mOOx_ (2003-10-16 15:59) [36]Vlad, может хватит пехать гдс везде, куда можно. Положи его только в директорию Выней (или в систем32) и дело с концами. Кому понадобиться, найдут (я имею ввиде приложения). Я так понимаю, что раз из делфей все работает, то обсуждение закрыто :)
← →
Vlad (2003-10-16 16:14) [37]>mOOx_ © (16.10.03 15:59) [36]
Закрыто, закрыто. П ехать действительно, хватит :)))
← →
mOOx_ (2003-10-16 18:19) [38]А использует он, кстати, то, что рядом с ехе :) 100%
Страницы: 1 вся ветка
Текущий архив: 2003.11.13;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.042 c