Il pacchetto DBMS_METADATA (supponendo che tu sia su una versione ragionevolmente recente di Oracle) genererà il DDL per qualsiasi oggetto nel database. Quindi
SELECT dbms_metadata.get_ddl( 'TABLE', 'TABLEA', 'SCHEMAA' )
FROM dual;
restituirà un CLOB con il DDL per SchemaA.TableA. Potresti catturare l'eccezione che viene generata che l'oggetto non esiste, ma tendo a suggerire di interrogare il dizionario dei dati (cioè DBA_OBJECTS) per verificare che ci sia una tabella denominata TableA in SchemaA, cioè
SELECT COUNT(*)
FROM dba_objects
WHERE owner = 'SCHEMAA'
AND object_name = 'TABLEA'
AND object_type = 'TABLE'
Nota che se non hai accesso a DBA_OBJECTS, puoi invece usare ALL_OBJECTS. La preoccupazione, tuttavia, è che potrebbe esserci una TableA in SchemaA su cui non si dispone dell'accesso SELECT. Quella tabella non apparirà in ALL_OBJECTS (che ha tutti gli oggetti a cui hai accesso) ma apparirà in DBA_OBJECTS (che ha tutti gli oggetti nel database indipendentemente dalla tua capacità di accedervi).
È quindi possibile scrivere il DDL in un file o, se il conteggio è 0, indicare che l'oggetto non esiste. Da una procedura memorizzata, è possibile utilizzare il pacchetto UTL_FILE per scrivere in un file sul server di database. Se si sta tentando di scrivere su un file nel file system del client, è necessario utilizzare una lingua che abbia accesso alle risorse del sistema operativo del client. Un piccolo programma C/ Java/ Perl/ ecc. dovrebbe essere in grado di selezionare un CLOB e scrivere quei dati in un file sul sistema operativo client.