![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Необходима помощь с UDF
Barman © (2003-12-25 07:45:00)
Уважаемые Мастера, прошу вашей помощи!
Есть СУБД Firebird. Есть несколько библиотек UDF. Я написал библиотеку, объединив все необходимые мне функции из нескольких библиотек в одну. Попытался поменять в базе данных название библиотеки с “udf 1” на “udf 2” и название точки входа с “Entry Point1” на “ Entry Point2”. При компиляции функции выскакивает такая ошибка:
This operation is not defined for system tables,
unsuccessful metadata update.
cannot delete
invalid switch ABS
there are 2 dependencies.
Как отключить эти зависимости? Функция используется в 2 процедурах.
Desdechado (2003-12-26 16:15:00) [1]
не очень легальный способ, но все же
UPDATE rdb$function_arguments SET rdb$field_length = 512
WHERE rdb$function_name = "INZONE" AND rdb$argument_position = 1
аналогично и для RDB$FUNCTIONS (только соблюдай регистр символов)
Digitman (2003-12-26 08:18:00) [2]
ну что поделаешь. если ты сразу неразумно поступил, с кучей библиотек !
придется последовательно отслеживать все зависимости по цепочке и делать вышеупомянутое для каждой из процедур ..
впрочем, если данных и метаданных в БД не так уж много, можно поступить иначе : средствами, нампример, IBExpert выгрузить структуру и данные базы в текстовый скрипт, подправить в нем нужные ссылки, а запустить скрипт на исполнение, чтобы создать базу заново
Barman (2003-12-25 18:46:00) [3]
Дак при компиляции эти процедуры тоже ругаются на ссылки на другие процедуры!
Digitman (2003-12-25 18:18:00) [4]
> Дело в том, что эти процедуры на другие ссылаются
тебе какое до этого дело ? и пусть ссылаются ! в чем проблема ? две процедуры всего нужно на время изменить и перекомпилить ! а потом на место вернешь прежний их текст
Barman (2003-12-25 17:06:00) [5]
А попроще нельзя никак? Дело в том, что эти процедуры на другие ссылаются...
Digitman (2003-12-25 08:30:00) [6]
закомментарь на время строчки в этих 2-х процедурах, где идет обращение к UDF, перекомпилируй процедуры, затем измени декларации UDF так чтобы они соответствовали новым названиям файлов библиотек и новым именам точек входа, затем раскомментарь обращения к й-циям в процедурах и вновь перекомпилируй их.