Search code examples
sqloracle-databasesqlplus

How to get Oracle create table statement in SQL*Plus


I have a table that exists in an Oracle database, but doesn't show on my list of tables in the tool SQL Developer. However, if I go to SQL*Plus, and do a

select table_name from user_tables;

I get the table listed. If I type

desc snp_clearinghouse;

it shows me the fields. I'd like to get the create statement, because I need to add a field. I can modify the table to add the field, but I still need the create statement to put into our source control. What pl/sql statement is used to get the create statement for a table?


Solution

  • From Get table and index DDL the easy way:

    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;