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