Balíček DBMS_METADATA (za předpokladu, že používáte přiměřeně nejnovější verzi Oracle) vygeneruje DDL pro jakýkoli objekt v databázi. Takže
SELECT dbms_metadata.get_ddl( 'TABLE', 'TABLEA', 'SCHEMAA' )
FROM dual;
vrátí CLOB s DDL pro SchemaA.TableA. Mohli byste zachytit výjimku, která je vyvolána, že objekt neexistuje, ale měl bych tendenci navrhovat, abyste se dotazovali na datový slovník (tj. DBA_OBJECTS), abyste ověřili, že ve SchemaA existuje tabulka s názvem TableA, tj.
SELECT COUNT(*)
FROM dba_objects
WHERE owner = 'SCHEMAA'
AND object_name = 'TABLEA'
AND object_type = 'TABLE'
Všimněte si, že pokud nemáte přístup k DBA_OBJECTS, můžete místo toho použít ALL_OBJECTS. Problémem však je, že ve SchemaA může být tabulkaA, ke které nemáte přístup SELECT. Tato tabulka by se neobjevila v ALL_OBJECTS (který má všechny objekty, ke kterým máte přístup), ale objeví se v DBA_OBJECTS (který má všechny objekty v databázi bez ohledu na vaši schopnost k nim přistupovat).
Potom můžete buď zapsat DDL do souboru, nebo, pokud je počet 0, označit, že objekt neexistuje. Z uložené procedury můžete použít balíček UTL_FILE k zápisu do souboru na databázovém serveru. Pokud se pokoušíte zapisovat do souboru na klientském souborovém systému, budete muset použít jazyk, který má přístup k prostředkům klientského operačního systému. Malý C/Java/Perl/atd. program by měl být schopen vybrat CLOB a zapsat tato data do souboru v klientském operačním systému.