2016-12-06 8 views
2

ORACLE: Пока ничего не пробовал. Я хочу показать на экране результаты select * from my_table. В этом случае my_table = select table_name from all_tables where owner='ABC' and name like 'ABC%'. Имя таблицы будет плюсом, но имя столбца является необходимостью. Я могу сделать это за несколько секунд с DB2, но не могу полностью перевести на Oracle.oracle select * from variable table name

Моя попытка:

variable refcur refcursor; 
    declare 
    my_select  varchar2(64); 
    cursor c_tables is 
     select table_name 
      from all_tables 
     where owner='ABC' and table_name like 'ABC%'; 
    begin 
    for x in c_tables 
     loop 
     dbms_output.put_line(x.table_name); 
     my_select := 'select * from ' || x.table_name; 
     open :refcur for my_select; 
     end loop; 

    exception 
    when no_data_found 
    then dbms_output.put_line('Nothing is found'); 
    end; 
/

Во всех моих попыток, лучшее, что я получил это таблица не существует Благодарности

ответ

0

Я не знаю, как вы вошли в систему, но если вы 'НЕ вошел в систему как ABC, вам нужно будет включить схему вместе с именем таблицы, например

my_select := 'select * from ' || x.owner || '.' || x.table_name; 

Кроме того, открытие курсора ничего не извлекает из него или не отображает данные в любом месте. Вам нужно будет добавить логику для извлечения данных из курсора, отображения данных и закрытия курсора. И поскольку имя таблицы не исправлено, база данных не может заранее сказать, как выглядит ваша строка, поэтому вам нужно познакомиться с пакетом DBMS_SQL, который используется для обработки динамического SQL, подобного этому.

Удачи.

Смежные вопросы