Paket DBMS_METADATA (dengan asumsi Anda menggunakan versi Oracle yang cukup baru) akan menghasilkan DDL untuk objek apa pun dalam database. Jadi
SELECT dbms_metadata.get_ddl( 'TABLE', 'TABLEA', 'SCHEMAA' )
FROM dual;
akan mengembalikan CLOB dengan DDL untuk SchemaA.TableA. Anda dapat menangkap pengecualian yang dilemparkan bahwa objek tidak ada, tetapi saya cenderung menyarankan agar Anda menanyakan kamus data (yaitu DBA_OBJECTS) untuk memverifikasi bahwa ada tabel bernama TableA di SchemaA, yaitu
SELECT COUNT(*)
FROM dba_objects
WHERE owner = 'SCHEMAA'
AND object_name = 'TABLEA'
AND object_type = 'TABLE'
Perhatikan bahwa jika Anda tidak memiliki akses ke DBA_OBJECTS, Anda dapat menggunakan ALL_OBJECTS sebagai gantinya. Kekhawatiran di sana, bagaimanapun, adalah bahwa mungkin ada TableA di SchemaA yang Anda tidak memiliki akses SELECT. Tabel tersebut tidak akan muncul di ALL_OBJECTS (yang memiliki semua objek yang dapat Anda akses) tetapi akan muncul di DBA_OBJECTS (yang memiliki semua objek dalam database terlepas dari kemampuan Anda untuk mengaksesnya).
Anda kemudian dapat menulis DDL ke file atau, jika hitungannya 0, menunjukkan bahwa objek tidak ada. Dari prosedur tersimpan, Anda dapat menggunakan paket UTL_FILE untuk menulis ke file di server database. Jika Anda mencoba menulis ke file di sistem file klien, Anda perlu menggunakan bahasa yang memiliki akses ke sumber daya sistem operasi klien. Program kecil C/ Java/ Perl/ dll. harus dapat memilih CLOB dan menulis data tersebut ke file pada sistem operasi klien.