Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Одна и та же операция для нескольких таблиц, скрипт vs что-то другое... 
:(
    Опции темы
neutrino
  Дата 18.1.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Приветствую!

Вот задача: нужно, например, во всех таблицах пользователя Х уменьшить/увеличить размер поля типа VARCHAR2 в два раза.

Иногда приходится решать такие задачи и все, что я делаю - пишу скрипт на сишеле, который в несколько стадий запрашивает данные из базы с помощью динамически сгенерированных скриптов и в последствии, с помощью таких же скриптов изменяет данные. Если логика задачи несколько более сложна, то скрипт становится просто динозавром...

Минусы:
- Скрипты обычно получаются внушительных размеров
- Трудно отлаживать
- Медленно работают

Есть ли какие-нибудь стандартные средства? Какой-нибудь скриптовой язык специально предназначенный для таких целей?

Извиняюсь, если вопрос ламерский.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
3x3
Дата 18.1.2007, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 2
Всего: 8



Цитата(neutrino @ 18.1.2007,  22:07)
Какой-нибудь скриптовой язык специально предназначенный для таких целей?

SQL smile


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Sqlninja
Дата 18.1.2007, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 15.5.2006
Где: San Francisco, CA

Репутация: 13
Всего: 13



Для Oraclе PL/SQL + динамический SQL + словарь данных - лучший вариант как по возможностям так и по производительности:

простейший вариант без обработки исключений и связываемых переменных:

Код

declare
l_sql varchar2(300);

cursor c_tabs is
 select table_name tname, owner oname
 from all_tables
 where owner = 'USER';

begin
for i in c_tabs loop
    l_sql:= 'ALTER TABLE '||i.oname||'.'||i.tname||' MODIFY some_column VARCHAR2(10)';
    EXECUTE IMMEDIATE l_sql;
end loop;
end;
/


Это сообщение отредактировал(а) Sqlninja - 18.1.2007, 22:38


--------------------
It's better to burn out than to fade away.
PM MAIL WWW ICQ   Вверх
neutrino
Дата 19.1.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Спасибо! 

Вопрос на самом деле ламерский... Просто я думал, что есть что-то на уровне операционки. (очень скромно)  smile 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.