Oracle 10g での作業。すべてのテーブル名を一覧表示する簡単な方法 (所有者 = 'me' の dba_tables から table_name を選択) しかし、テーブル名を取得したので、それらをループして、それぞれを順番に「説明」する簡単な方法はありますか?
1864 次
5 に答える
2
DBA_TAB_COLUMNS (または USER_TAB_COLUMNS) に対してクエリを実行できます。
ニコラス。
于 2010-06-17T14:33:28.503 に答える
1
PL/SQL内から記述できるかどうかわかりません。を使ってみましexecute immediate 'describe some_table'たが、それもうまくいきません。次に選択するのは、DBA_TAB_COLUMNS を照会するか、すべての記述ステートメントを含む新しいファイルを作成し (ファイルを作成するために pl/sql およびスプールからの dbms_output を使用)、そのファイルを実行することです。多分このように:
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!*/
于 2010-06-17T14:44:15.690 に答える
1
PL/SQL でDBMS_METADATA.GET_DDLを使用してこれを行うことができます。たとえば (ドキュメントからの例):
SET LONG 2000000
SET PAGESIZE 0
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') FROM DUAL;
于 2010-06-18T01:19:23.057 に答える
0
N. Gasparotto が提案したように、dba_tab_columns にクエリを実行することをお勧めしますが、本当に出力を記述したい場合は、次のようにファイル mulit-describe.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
于 2010-06-17T15:39:26.083 に答える