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

Откуда:
Сообщений: 201
Пытаюсь выполнить вот такую операцию для всех таблиц схемы:

DECLARE
  owner1 VARCHAR2(30):='o1';
  owner2 VARCHAR2(30):='o2';
  tbs1 VARCHAR2(30):='USERS';
  tbs2 VARCHAR2(30):='tbs2';

   i VARCHAR2(100);
BEGIN
dbms_output.enable(buffer_size=>null);
  FOR i IN 
  (select * from all_tables 
  where (owner=o1 or owner=o2)
  and tablespace_name=tbs1 order by table_name
  ) 
  LOOP
     EXECUTE IMMEDIATE 'ALTER TABLE ' || i.table_name || ' enable row movement';
     dbms_output.put_line(i.table_name);
  END LOOP; 
END;
Выскакивает ошибка ORA-00942: таблица или представление пользователя не существует.
Всё существует. То есть логически и синтаксически всё верно. Точно такой же скрипт, но с командой EXECUTE IMMEDIATE 'ALTER TABLE ' || i.table_name || ' MOVE TABLESPACE "' || tbs2 ||'"' выполняется. Или если оставить в цикле только dbms_output.put_line(i.table_name), то выводится список таблиц. Что не так?
30 июн 09, 17:04    [7360276]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется кусок кода. Подскажите почему  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
Cyril,

Права даны на прямую или через роль?
30 июн 09, 17:07    [7360293]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется кусок кода. Подскажите почему  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Как минимум, если на таблицу нет синонима, то желательно к имени присоединять OWNER-а ...
30 июн 09, 17:09    [7360309]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется кусок кода. Подскажите почему  [new]
Elic
Member

Откуда:
Сообщений: 29990
RTFM ТОП №4
30 июн 09, 17:12    [7360331]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется кусок кода. Подскажите почему  [new]
Cyril
Member

Откуда:
Сообщений: 201
Права даны напрямую: grant alter any table to o1. Отрабатывает нормально.
30 июн 09, 17:20    [7360371]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется кусок кода. Подскажите почему  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Cyril
Права даны напрямую: grant alter any table to o1. Отрабатывает нормально.
права на select из all_tables.
Ну и плюс то, что tru55 написал.
30 июн 09, 17:22    [7360380]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется кусок кода. Подскажите почему  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Jannny
Cyril
Права даны напрямую: grant alter any table to o1. Отрабатывает нормально.
права на select из all_tables.

вы не описались ????
30 июн 09, 17:24    [7360388]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется кусок кода. Подскажите почему  [new]
попробуйте
Guest
EXECUTE IMMEDIATE 'ALTER TABLE ' ||i.owner||'.'|| i.table_name || ' enable row movement';
30 июн 09, 17:30    [7360421]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется кусок кода. Подскажите почему  [new]
Cyril
Member

Откуда:
Сообщений: 201
попробуйте
EXECUTE IMMEDIATE 'ALTER TABLE ' ||i.owner||'.'|| i.table_name || ' enable row movement';

Спасибо. Надо делать именно так. Всем спасибо. Получилось. Тема закрыта.
30 июн 09, 17:33    [7360445]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить