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

Вниз

Alter рекурсивной процедуры   Найти похожие ветки 

 
Lexer   (2004-02-02 11:50) [0]

Столкнулся с такой во проблемой... Есть рекурсивная процедура, мне надо изменить количество её выходных параметров, точнее добавить еще один. Может есть способ сделать Alter без её удаления, т.к. эту проыедуру используют еще процедур 20, влом мне все их пересоздавать...


 
MV   (2004-02-02 11:57) [1]

1.Создаещь новую процедуру, с похожим именем;
2.Альтеришь остальные двадцать, которые ссылались на старую.
3. Дроп старой.

А при чем тут рекусия? Обычно проблема при создании новой рекурсивно решается так:

1.

Alter процедура
бегин
/* Типа пустая*/
енд

2.
Alter процедура
бегин
ссылается Сама на себя.
енд


 
Sandman25   (2004-02-02 11:57) [2]

Но ведь все равно нужно будет изменить вызов этой процедуры из тех 20. Или есть способ добавить выходной параметр по умолчанию?


 
MV   (2004-02-02 11:59) [3]

Что за сервак-то?


 
DenK_vrtz   (2004-02-02 12:00) [4]

хоть и не указана СУБД, попробую предложить

в описании процедуры вместо CREATE написать CREATE or REPLACE
+ перекомпиляция недействительных объектов


 
MV   (2004-02-02 12:02) [5]

+ перекомпиляция недействительных объектов
Это как?


 
Lexer   (2004-02-02 12:02) [6]

Новый параметр будут использовать не все, только часть из старых процедур.
Проблема в том что Drop надо делать в определенном порядке порядке, и также Create.
День работы блин, чтоб выявить все ссылки...
Использую IB.5, и мне кажеться там нет Replace (


 
Lexer   (2004-02-02 12:04) [7]

Где-то видел статейку, это обходится как-то, используя RDB таблицы, но, блин не найду её..


 
MV   (2004-02-02 13:05) [8]

Ах, IB, что ж ты сразу не сказал!
Возьми IBExpert - там тебе покажут все зависимые ссылки сразу!
Комментишь во всех вызывающих процедурах/триггерах ссылку, затем

1.

Alter процедура (новый набор параметров)

бегин
/* Типа пустая*/
енд

2.
Alter процедура (новый набор параметров)
бегин
ссылается Сама на себя (новый набор параметров).
енд

потом восстанавливаешь ранее закомментированное (с учетом новых параметров, естественно). Получаем рабочую базу образец.

Юзай Data Base Comparer - получишь на выходе готовый скрипт для правки остальных экземпляров базы (если таковые имеются) на основе сравнения старой и новой структуры.


 
MV   (2004-02-02 15:30) [9]

IBExpert включает в себя Datа Base Comparer - во, блин, век живи, век учись!


 
Соловьев   (2004-02-02 15:50) [10]

Я для процедуры работы с деревом использовал рекурсию, так IBExpert все делал без проблем в редакторе - никаких Datа Base Comparer не юзал(явно). Все редактируется и правится хоть рекурсия, хоть что-то.


 
MV   (2004-02-02 16:28) [11]

Comparer - это чтобы скрипт генерить, который потом клиентам рассылать, чтобы структуры базы по новую версию правили.


 
Lexer   (2004-02-02 17:49) [12]

Я как раз с IBExpert работаю, но Comparer там не нашел...
Кстати большое спасибо MV, всё гениальное ОЧЕНЬ просто :)
Всё изминил, а то пришлось бы впихивать в скрипт все дропы креаты остальных процедур, да еще и смотреть все ссылки...

Еще раз спасибо


 
MV   (2004-02-02 18:01) [13]

http://www.ibexpert.com/rus/ibe_sfx.exe - самый свежий.

ALT > Внешние модули > IB DataBase Comparer



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

Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.019 c
3-79548
NoName
2004-01-29 22:37
2004.02.25
Хранимая процедура


1-79942
Zemal
2004-02-09 16:35
2004.02.25
Как получить из консольного приложения путь к исполняемому файлу?


14-80210
Nikolay M.
2004-01-30 15:03
2004.02.25
Ответы некоторых пользователей на письма вроде


14-80133
miwa
2004-02-05 06:51
2004.02.25
А вот есть ли такая программа?


4-80346
BKGG
2003-12-17 20:06
2004.02.25
Как с помощю API создать обработчик нажатия Button-а.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский