Пакетът DBMS_METADATA (ако приемем, че използвате сравнително нова версия на Oracle) ще генерира DDL за всеки обект в базата данни. Така че
SELECT dbms_metadata.get_ddl( 'TABLE', 'TABLEA', 'SCHEMAA' )
FROM dual;
ще върне CLOB с DDL за SchemaA.TableA. Можете да хванете изключението, което се хвърля, че обектът не съществува, но бих предложил да направите заявка към речника на данните (т.е. DBA_OBJECTS), за да проверите дали има таблица с име TableA в SchemaA, т.е.
SELECT COUNT(*)
FROM dba_objects
WHERE owner = 'SCHEMAA'
AND object_name = 'TABLEA'
AND object_type = 'TABLE'
Имайте предвид, че ако нямате достъп до DBA_OBJECTS, можете да използвате ALL_OBJECTS вместо това. Притеснението там обаче е, че може да има TableA в SchemaA, до която нямате достъп SELECT. Тази таблица няма да се появи във ALL_OBJECTS (която има всички обекти, до които имате достъп), но ще се появи в DBA_OBJECTS (която има всички обекти в базата данни, независимо от възможността ви за достъп до тях).
След това можете да запишете DDL във файл или, ако броят е 0, да посочите, че обектът не съществува. От съхранена процедура можете да използвате пакета UTL_FILE, за да пишете във файл на сървъра на базата данни. Ако се опитвате да пишете във файл на клиентската файлова система, ще трябва да използвате език, който има достъп до ресурсите на клиентската операционна система. Една малка C/ Java/ Perl/ и т.н. програма трябва да може да избере CLOB и да запише тези данни във файл на клиентската операционна система.