Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите написать скрипт на update  [new]
Moldavanin
Member

Откуда:
Сообщений: 4
Есть порядка 200 таблиц, в которых надо проапдейтить одно поле 'branch'. Вот этим скриптом вытаскиваю все имена таблиц, а что дальше делать пока не придумал.
SELECT owner, table_name, column_name, comments
FROM sys.all_col_comments
where owner='XXX'
and column_name ='branch'
16 окт 07, 11:44    [4798353]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать скрипт на update  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Moldavanin
а что дальше делать
собирать и выполнять с помощью динамического SQL текст своих апдейтов

Только непонятно, почему Вы ищете в этой табличке? :) Или вам надо комментарий к столбцу изменить?
16 окт 07, 11:47    [4798376]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать скрипт на update  [new]
Levandovskiy
Member

Откуда:
Сообщений: 329
EXECUTE IMMEDIATE Statement
16 окт 07, 11:48    [4798382]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать скрипт на update  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116272
Дальше динамический SQL / spool

all_col_comments - можно, но почему оно ?
Более естественно all_tab_columns, но в обоих случаях обязательна проверка типа объекта -
легко можете нарваться на представление ...

branch - написание очень подозрительное
Вам Ваш селект что- то вернул ?
16 окт 07, 11:52    [4798408]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать скрипт на update  [new]
Moldavanin
Member

Откуда:
Сообщений: 4
Jannny
собирать и выполнять с помощью динамического SQL текст своих апдейтов
Только непонятно, почему Вы ищете в этой табличке? :) Или вам надо комментарий к столбцу изменить?

мне надо было выбрать все таблицы в которых есть поле branch, а теперь надо в каждой из них сделать update ... set branch=12345 where branch=56789
с SQL у меня туговато пока, поэтому спросил помощи
16 окт 07, 11:58    [4798447]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать скрипт на update  [new]
Moldavanin
Member

Откуда:
Сообщений: 4
dmidek

branch - написание очень подозрительное
Вам Ваш селект что- то вернул ?

Имя поля на самом деле другое
16 окт 07, 12:00    [4798459]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать скрипт на update  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
BEGIN
  FOR REC IN (SELECT T.OWNER, T.TABLE_NAME FROM DBA_TAB_COLUMNS T, DBA_OBJECTS T2 
              WHERE T.COLUMN_NAME = 'BRANCH' 
               AND T.OWNER = T2.OWNER AND T.TABLE_NAME = T2.OBJECT_NAME
               AND T2.OBJECT_TYPE = 'TABLE') LOOP
    EXECUTE IMMEDIATE 'UPDATE '||REC.OWNER||'.'||REC.TABLE_NAME||' SET BRANCH=12345 WHERE BRANCH=56789';
    dbms_output.put_line(REC.OWNER || '.' || REC.TABLE_NAME);
  END LOOP;
--  COMMIT;
END;
16 окт 07, 12:09    [4798533]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать скрипт на update  [new]
Двоюшник
Member

Откуда: Киев
Сообщений: 1135
Moldavanin
Jannny
собирать и выполнять с помощью динамического SQL текст своих апдейтов
Только непонятно, почему Вы ищете в этой табличке? :) Или вам надо комментарий к столбцу изменить?

мне надо было выбрать все таблицы в которых есть поле branch, а теперь надо в каждой из них сделать update ... set branch=12345 where branch=56789
с SQL у меня туговато пока, поэтому спросил помощи


дмидек уже упоминал all_tab_columns связать с all_objects отфильтровав OBJECT_TYPE = 'TABLE'.
С помощью динамического SQL или в SQL*Plus spool выполнить апдейт ...
16 окт 07, 12:09    [4798536]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать скрипт на update  [new]
Moldavanin
Member

Откуда:
Сообщений: 4
Спасибо за помощь и советы.
16 окт 07, 12:44    [4798864]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить