![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в Oracle сделать аналог ReplaceStr для поля Long [D7]
ORA-Del © (2005-11-22 12:05:00)Проблема такая - есть функция, используемая во многих представлениях, пакетах и процедурах. Захотел ее переименовать (т.к. не проявил ума при ее назывании).
Делаю select * from sys.all_objects и в поле TEXT (Long) необходимо имя этой функции заменить на новое... Как это сделать, поскольку вручную редактировать около 150 объектов сложно.
Заранее благодарю!
Reindeer Moss Eater (2005-11-22 13:04:00) [1]После замены текста процедур все равно придется их перекомпилировать.
Так что лучше уж сразу.
Выгрузить скрипты, изменить их и накатить снова.
ANB (2005-11-22 13:02:00) [2]
> ORA-Del (22.11.05 12:41) [5]
Добраться то можно. Только попробуй в этой вьюхе чего нибудь проапдейтить. Гы.
Полазить можно по системным таблицам, но связок там намного больше, чем ты думаешь. В одном месте не поправишь - и получишь кирдык базе.
> Поумничать может каждый, а по существу кто сможет посоветовать?
По существу - да пожалуйста : оракл не поддерживает в строковых функциях тип LONG. Рекомендуется конвертировать такие поля в блобы.
Еще по существу : тоад умеет создавать скрипт БД. И девелопер тоже (в последних версиях).
Последний раз по существу - попробуй выполнить вот это :
update sys.obj$
set Name = 'Новое имя'
Sergey13 (2005-11-22 12:54:00) [3]2[5] ORA-Del (22.11.05 12:41)
> по которым несложно добраться до поля TEXT из вьюх all_tables (all_all_tables, all_views и т.д.)
Ну спасибо за просвещение. Мы то темные не ведали сего. Понятно ведь - чувак имеет SYS-овский пароль и добраться может до чего угодно.
>и не играет роли, вьюхи это или таблицы!
Да ну? А почему это вьюха, а не просто таблица не догадываешься? Может потому, в частности, чтоб не ковырялись в ней с изменениями.
Desdechado (2005-11-22 12:49:00) [4]зачем исходные? возьми текущие
выгрузить не составляет труда
ORA-Del (2005-11-22 12:41:00) [5]Спасибочки за ответы: метод коряв - это видно невооруженным взглядом, но, блн, когда для БД - есть исходные скрипты, а потом на них еще около двадцати внушительных обновлений - очень сложно искать последние копии 150 объектов по всему этому файловому безобразию, точно, как и выдергивать исходные коды объектов (всего их, блн, 618). Мне легче такое имя оставить это долбаной функции, как есть...
> Sergey13 © (22.11.05 12:12) [3]
В ник написал что пришло в голову, а в all_objects есть поля object_name и object_type, по которым несложно добраться до поля TEXT из вьюх all_tables (all_all_tables, all_views и т.д.) и не играет роли, вьюхи это или таблицы!
Поумничать может каждый, а по существу кто сможет посоветовать?
Desdechado (2005-11-22 12:13:00) [6]поле TEXT есть в all_procedures, но это ничего не меняет - подход коряв
Sergey13 (2005-11-22 12:12:00) [7]Фигню ты задумал, ИМХО. Или оправдание своему нику делаешь?
Начнем с того, что sys.all_objects - это вьюха, а не таблица. Поля TEXT я там (на 8-ке по крайней мере) не нашел вообще.
Desdechado (2005-11-22 12:11:00) [8]не рекомендую копаться в системных таблицах, не понимая их сути
ведь в них еще прописываются взаимосвязи и т.п.
лучше выгрузить ХП и т.п. в скрипт, сделать массовую замену в нем, а потом выполнить его на БД
гораздо быстрее и правильнее
ANB (2005-11-22 12:10:00) [9]
> ORA-Del (22.11.05 12:05)
Загружаешь в тоад скрипты создания схемы (базы) и Ctrl+R рулит. А системные объекты лучше не трогать. Тем более это вьюха - чего ты в ней менять то собрался ?