Как заставить Oracle создавать инструкцию таблицы в SQL * Plus

У меня есть таблица, которая существует в базе данных Oracle, но не отображается в моем списке таблиц в инструменте SQL Developer. Однако, если я перейду в SQL * Plus и сделаю

select table_name from user_tables; 

Я приведу таблицу. Если я напечатаю

 desc snp_clearinghouse; 

он показывает мне поля. Я хотел бы получить инструкцию create, потому что мне нужно добавить поле. Я могу изменить таблицу, чтобы добавить это поле, но мне все еще нужен оператор create для ввода в наш исходный элемент управления. Какой оператор pl / sql используется для получения инструкции create для таблицы?

Из таблицы Get и индекса DDL можно легко :

 set heading off; set echo off; Set pages 999; set long 90000; spool ddl_list.sql select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual; select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual; spool off; 

То же, что и выше, но общий скрипт, найденный здесь gen_create_table_script.sql

 -- ############################################################################################# -- -- %Purpose: Generate 'CREATE TABLE' Script for an existing Table in the database -- -- Use: SYSTEM, SYS or user having SELECT ANY TABLE system privilege -- -- ############################################################################################# -- set serveroutput on size 200000 set echo off set feedback off set verify off set showmode off -- ACCEPT l_user CHAR PROMPT 'Username: ' ACCEPT l_table CHAR PROMPT 'Tablename: ' -- DECLARE CURSOR TabCur IS SELECT table_name,owner,tablespace_name, initial_extent,next_extent, pct_used,pct_free,pct_increase,degree FROM sys.dba_tables WHERE owner=upper('&&l_user') AND table_name=UPPER('&&l_table'); -- CURSOR ColCur(TableName varchar2) IS SELECT column_name col1, DECODE (data_type, 'LONG', 'LONG ', 'LONG RAW', 'LONG RAW ', 'RAW', 'RAW ', 'DATE', 'DATE ', 'CHAR', 'CHAR' || '(' || data_length || ') ', 'VARCHAR2', 'VARCHAR2' || '(' || data_length || ') ', 'NUMBER', 'NUMBER' || DECODE (NVL(data_precision,0),0, ' ',' (' || data_precision || DECODE (NVL(data_scale, 0),0, ') ',',' || DATA_SCALE || ') '))) || DECODE (NULLABLE,'N', 'NOT NULL',' ') col2 FROM sys.dba_tab_columns WHERE table_name=TableName AND owner=UPPER('&&l_user') ORDER BY column_id; -- ColCount NUMBER(5); MaxCol NUMBER(5); FillSpace NUMBER(5); ColLen NUMBER(5); -- BEGIN MaxCol:=0; -- FOR TabRec in TabCur LOOP SELECT MAX(column_id) INTO MaxCol FROM sys.dba_tab_columns WHERE table_name=TabRec.table_name AND owner=TabRec.owner; -- dbms_output.put_line('CREATE TABLE '||TabRec.table_name); dbms_output.put_line('( '); -- ColCount:=0; FOR ColRec in ColCur(TabRec.table_name) LOOP ColLen:=length(ColRec.col1); FillSpace:=40 - ColLen; dbms_output.put(ColRec.col1); -- FOR i in 1..FillSpace LOOP dbms_output.put(' '); END LOOP; -- dbms_output.put(ColRec.col2); ColCount:=ColCount+1; -- IF (ColCount < MaxCol) THEN dbms_output.put_line(','); ELSE dbms_output.put_line(')'); END IF; END LOOP; -- dbms_output.put_line('TABLESPACE '||TabRec.tablespace_name); dbms_output.put_line('PCTFREE '||TabRec.pct_free); dbms_output.put_line('PCTUSED '||TabRec.pct_used); dbms_output.put_line('STORAGE ( '); dbms_output.put_line(' INITIAL '||TabRec.initial_extent); dbms_output.put_line(' NEXT '||TabRec.next_extent); dbms_output.put_line(' PCTINCREASE '||TabRec.pct_increase); dbms_output.put_line(' )'); dbms_output.put_line('PARALLEL '||TabRec.degree); dbms_output.put_line('/'); END LOOP; END; /