Pakiet DBMS_METADATA (zakładając, że korzystasz z całkiem nowej wersji Oracle) wygeneruje DDL dla dowolnego obiektu w bazie danych. Więc
SELECT dbms_metadata.get_ddl( 'TABLE', 'TABLEA', 'SCHEMAA' )
FROM dual;
zwróci CLOB z DDL dla SchemaA.TableA. Możesz złapać wyjątek, który jest rzucany, że obiekt nie istnieje, ale sugerowałbym wykonanie zapytania do słownika danych (tj. DBA_OBJECTS), aby sprawdzić, czy w SchemaA znajduje się tabela o nazwie TableA, tj.
SELECT COUNT(*)
FROM dba_objects
WHERE owner = 'SCHEMAA'
AND object_name = 'TABLEA'
AND object_type = 'TABLE'
Zauważ, że jeśli nie masz dostępu do DBA_OBJECTS, możesz zamiast tego użyć ALL_OBJECTS. Problem polega jednak na tym, że w SchemaA może znajdować się tabela A, do której nie masz dostępu SELECT. Ta tabela nie pojawiłaby się w ALL_OBJECTS (która zawiera wszystkie obiekty, do których masz dostęp), ale pojawiłaby się w DBA_OBJECTS (która zawiera wszystkie obiekty w bazie danych, niezależnie od tego, czy masz do nich dostęp).
Następnie możesz zapisać kod DDL do pliku lub, jeśli liczba wynosi 0, wskazać, że obiekt nie istnieje. Z procedury składowanej można użyć pakietu UTL_FILE do zapisu do pliku na serwerze bazy danych. Jeśli próbujesz pisać do pliku w systemie plików klienta, musisz użyć języka, który ma dostęp do zasobów systemu operacyjnego klienta. Mały program C/ Java/ Perl/ itp. powinien być w stanie wybrać CLOB i zapisać te dane do pliku w systemie operacyjnym klienta.