Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

подскажите с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.044 c
14-42107
Delirium^.Tremens
2003-10-22 09:27
2003.11.13
Ищу работу!


14-42048
MsGuns
2003-10-15 21:00
2003.11.13
Карты для Героев - III


1-41346
Kashey
2003-10-29 15:36
2003.11.13
Как добюраться до HTML кода странички


14-42046
Zhouck
2003-10-15 13:49
2003.11.13
Помогите вычислить злобного хакера-киддиса


1-41372
Zilog
2003-10-29 12:14
2003.11.13
Pascal 7.0 Немогу переменной типа integer присвоить значение...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский