Pakiet DBMS_METADATA (zakładając, że korzystasz z rozsądnie nowszej wersji Oracle) wygeneruje DDL dla dowolnego obiektu w bazie danych. Tak więc zostanie zwrócony obiekt CLOB z plikiem DDL dla SchemaA.TableA. Można wychwycić wyjątek, który został zgłoszony, że obiekt nie istnieje, ale sugerowałbym, aby zapytać słownik danych (np. DBA_OBJECTS), aby sprawdzić, czy istnieje tabela o nazwie TableA w SchemaA, tj.
SELECT COUNT(*)
FROM dba_objects
WHERE owner = 'SCHEMAA'
AND object_name = 'TABLEA'
AND object_type = 'TABLE'
Pamiętaj, że jeśli nie masz dostępu do DBA_OBJECTS, możesz zamiast tego użyć ALL_OBJECTS. Istnieje jednak obawa, że w Schema A może znajdować się tabela A, na której nie masz dostępu SELECT. Ta tabela nie pojawi się w ALL_OBJECTS (która ma wszystkie obiekty, do których masz dostęp), ale pojawi się w DBA_OBJECTS (która ma wszystkie obiekty w bazie danych, bez względu na twoją możliwość dostępu do nich).
Następnie można zapisać plik 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, aby zapisać 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/etc. powinien mieć możliwość wybrania CLOB i zapisania tych danych do pliku w systemie operacyjnym klienta.
Świetne, Justin, testowałem pierwszą część sql działa świetnie, ale kiedy uruchamiam drugą część, mam ORA-00942: tabela lub widok nie istnieje. I jak mogę napisać clob do pliku przy użyciu sql? – Sawyer
@ZZcat - Zaktualizowano moją odpowiedź –
Drobne zaniedbanie - pierwsza próbka SQL potrzebuje przecinka między "TABELĄ" a "TABELĄ", bez której nie zadziała. –