Форум: "Базы";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
ВнизНеобходима помощь с UDF Найти похожие ветки
← →
Barman (2003-12-25 07:45) [0]Уважаемые Мастера, прошу вашей помощи!
Есть СУБД 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 процедурах.
← →
Digitman (2003-12-25 08:30) [1]закомментарь на время строчки в этих 2-х процедурах, где идет обращение к UDF, перекомпилируй процедуры, затем измени декларации UDF так чтобы они соответствовали новым названиям файлов библиотек и новым именам точек входа, затем раскомментарь обращения к й-циям в процедурах и вновь перекомпилируй их.
← →
Barman (2003-12-25 17:06) [2]А попроще нельзя никак? Дело в том, что эти процедуры на другие ссылаются...
← →
Digitman (2003-12-25 18:18) [3]
> Дело в том, что эти процедуры на другие ссылаются
тебе какое до этого дело ? и пусть ссылаются ! в чем проблема ? две процедуры всего нужно на время изменить и перекомпилить ! а потом на место вернешь прежний их текст
← →
Barman (2003-12-25 18:46) [4]Дак при компиляции эти процедуры тоже ругаются на ссылки на другие процедуры!
← →
Digitman (2003-12-26 08:18) [5]ну что поделаешь. если ты сразу неразумно поступил, с кучей библиотек !
придется последовательно отслеживать все зависимости по цепочке и делать вышеупомянутое для каждой из процедур ..
впрочем, если данных и метаданных в БД не так уж много, можно поступить иначе : средствами, нампример, IBExpert выгрузить структуру и данные базы в текстовый скрипт, подправить в нем нужные ссылки, а запустить скрипт на исполнение, чтобы создать базу заново
← →
Desdechado (2003-12-26 16:15) [6]не очень легальный способ, но все же
UPDATE rdb$function_arguments SET rdb$field_length = 512
WHERE rdb$function_name = "INZONE" AND rdb$argument_position = 1
аналогично и для RDB$FUNCTIONS (только соблюдай регистр символов)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c