Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизЗапрос в виде цикла Найти похожие ветки
← →
alsov (2004-06-17 10:04) [0]Уважаемые мастера
Нельзя ли в Оракле написать такой запрос, чтобы выбирал данные из таблицы построчно и производил с ними какие-либо действия?
Например в таблице, в одном из полей, содержатся названия триггеров, нужно эти триггеры поудалять.
Можно, конечно это сделать из программной среды (например Delphi), с помощью нескольких запросов, но хотелось бы, чтобы эти действия производил сервер.
Заранее благодарен.
P.S. Просьба сильно не ругать, я в этом деле новичёк
← →
Sandman25 © (2004-06-17 10:09) [1]AFAIK нельзя.
← →
Reindeer Moss Eater © (2004-06-17 10:10) [2]begin
for trigg_cur in (select trig_name from trig_table)
loop
EXECUTE IMMEDIATE "DROP TRIGGER " || trigg_cur.trig_name;
end loop;
end;
/
← →
alsov (2004-06-17 10:25) [3]2Reindeer Moss Eater
не хочет, ругается
Пишет вот что:
EXECUTE IMMEDIATE "DROP TRIGGER " || user_triggers.trigger_name;
*
ошибка в строке 4:
ORA-06550: line 4, column 53:
PLS-00357: Table,View Or Sequence reference "USER_TRIGGERS.TRIGGER_NAME" not allowed in this context
ORA-06550: line 4, column 2:
PL/SQL: Statement ignored
← →
Val © (2004-06-17 10:29) [4]>alsov (17.06.04 10:25) [3]
а теперь покажите что ВЫ написали
← →
Sergey13 © (2004-06-17 10:29) [5]2alsov (17.06.04 10:04)
Может и можно, но вот нужно ли? ИМХО - любая программа (кроме скрипта на создание базы) по изменению структуры - потенциальное (в лучшем случае) зло.
>я в этом деле новичёк
тем более!!!
← →
alsov (2004-06-17 10:31) [6]2Val
begin
for trigg_cur in (select trigger_name from user_triggers)
loop
EXECUTE IMMEDIATE "DROP TRIGGER " || user_triggers.trigger_name;
end loop;
end;
/
← →
Reindeer Moss Eater © (2004-06-17 10:33) [7]|| user_triggers.trigger_name;
... || trigg_cur.trig_name;
← →
alsov (2004-06-17 10:45) [8]2Reindeer Moss Eater
Спасибо, всё получилось
← →
Sergey13 © (2004-06-17 11:26) [9]2alsov (17.06.04 10:45) [8]
>2Reindeer Moss Eater
>Спасибо, всё получилось
Не хочется каркать, но как бы ты, при таком подходе, его позже не проклял. 8-)
← →
alsov (2004-06-17 11:34) [10]
> Не хочется каркать, но как бы ты, при таком подходе, его
> позже не проклял. 8-)
Почему так?
← →
Sergey13 © (2004-06-17 11:53) [11]2alsov (17.06.04 11:34) [10]
Это скорее для потрепаться рассуждения, и я не претендую на истину.
>Например в таблице, в одном из полей, содержатся названия триггеров, нужно эти триггеры поудалять.
Если это "жизненный" пример то.
1.Как заполняется эта таблица?
2.Каков принцип занесения в нее?
3.По какому принципу твоя программа определяет, что тригер надо удалить?
Ты бы доверил некоей проге пошарить на твоей машине и поудалять разные программы, ненужные с ее точки зрения?
Мое убеждение - работа со структурой БД (тем более рабочей) обычно очень плохо автоматизируется, потому что над каждым действием надо думать и проверять.
Потом, изменение объекта ведет к смене валидности связанных объектов. Ты уверен, что после таких твоих действий все остальное будет работать?
Удаление тригера коварная вещь - вроде все работает, а через пол года вдруг обнаруживаешь такое, что... 8-( А ты просто забыл и не подумал об этом при удалении.
Ну и последнее - работа над структурой на 99% разовая и сделать ее руками в какой нить тулзе обычно не занимает много времени, по крайней мере не намного больше чем прогу писать.
Повторю - все это мое исключительное ИМХО.
← →
alsov (2004-06-17 12:35) [12]2Sergey13
Мне просто нужно было разобраться как работает цикл в оракле.
База моя - создана только для тренировки.
Причём не я один тренируюсь, поэтому решил написать скрипт полной очистки базы (повторяю - число для тренировки)
Насчёт всего остального - ты абсолютно прав.
Да, если подскажешь, какая тулза для оракла 9 лучше всего подходит, а то стандартные меня не устраивают.
Хорошо бы что-то вроде SQL Explorer"а.
← →
Val © (2004-06-17 14:44) [13]1. для полной очистки базы не нужно вручную удалять триггера, как вы думаете, что сделает с ними сервер, если вы удалите таблицу?
2. для тренировки и разбора работы циклов советую с данными работать, а не с метаданными.
3. SQL Navigator, PL/SQL Developer, TOAD
← →
malkolinge © (2004-06-17 14:46) [14]Книжку возьми по PL SQL и прочитай там про курсоры
← →
alsov (2004-06-17 14:59) [15]Всем спасибо
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c