Имена таблиц и цикл для описания

Работаю в Oracle 10g. Простой способ составить список всех имен таблиц (выберите table_name из dba_tables, где owner = 'me'). Но теперь, когда у меня есть имена таблиц, есть ли простой способ циклически просматривать их и делать "описания" для каждой из них по очереди?

5 ответов

Вы можете сделать запрос к DBA_TAB_COLUMNS (или USER_TAB_COLUMNS).

Николя.

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

    spool desctables.sql
    select 'describe '||table_name||';' from user_tables;
    spool off
    spool alltables.txt
    @desctables.sql
    spool off
    

Не уверен, что вы можете сделать описание из PL/SQL. Я просто пытался использовать execute immediate 'describe some_table', это тоже не работает. Следующим выбором будет запрос DBA_TAB_COLUMNS или создание нового файла со всеми вашими операторами описания (используя dbms_output из pl/sql и spool для создания файла), а затем выполните этот файл. Может быть так:

spool temp_file.sql
BEGIN
    /*or you could have a loop here with as many put_lines as you need, it will all end up in the new script file.*/
    dbms_output.put_line('describe some_table');
END;
/
spool off
@temp_file.sql
/*I have not actually tried running this code, beware syntax errors!*/

Вы можете сделать это в PL/SQL, используя DBMS_METADATA.GET_DDL, например (пример взят из документации):

SET LONG 2000000
SET PAGESIZE 0
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') FROM DUAL;

Я бы порекомендовал запросить dba_tab_columns, как предложил Н. Гаспаротто, но если вы действительно хотите описать вывод, то создайте файл mulit-description.sql со следующим:

set pagesize 0
set termout off
set feedback off
set verify off

spool mdtmp.sql
select 'describe ' || owner || '.' || table_name
from dba_tables
where OWNER = upper('&1')
/

spool off
set termout on
@mdtmp.sql

В SQL*PLUS работают:

@multi-describe ME
Другие вопросы по тегам