Как получить SQL, используемый для создания представления в Oracle?
В Oracle для получения SQL, используемого для создания функции, пакета и т.д., Можно запросить представление user_source. Однако представления не включаются в это представление и не существуют в базовом sys.source$
. Чтобы получить доступ к тексту представлений, можно использовать столбец user_views.text
, но это не совсем так, потому что Oracle переписывает некоторые части запроса, например, выполняет глобальное расширение.
Как я могу получить SQL, использованный для создания представления, в точности так, как оно было введено, без расширения глобуса?
Ответы
Ответ 1
Я думаю, что исходный текст потерян:
create table t1(id number)
/
create view t1_vw as select * from t1
/
alter table t1 add val varchar2(20)
/
alter view t1_vw compile
/
select * from t1_vw
/
будет возвращаться только столбец id.
Интересно, но для материализованных представлений сохраняется оригинальный текст.
Ответ 2
Вы можете использовать следующий запрос:
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS;
или вы можете использовать ALL_VIEWS, как в
SELECT VIEW_NAME, TEXT
FROM ALL_VIEWS;
Рекомендации:
ALL_VIEWS в Oracle® Database Reference
Ответ 3
Я использую dbms_metadata.get_ddl следующим образом:
select
dbms_metadata.get_ddl('VIEW', 'VIEW_NAME', 'VIEW_OWNER')
from
dual;
Вот параметр:
DBMS_METADATA.GET_DDL (
object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;
У этого есть общественный синоним. Для объектов, не принадлежащих пользователю, можно получить системную привилегию SELECT_CATALOG_ROLE, и каждый DDL может видеть все объекты.
В Oracle SQL Developer вы можете увидеть clob в окне результатов запроса (многие люди создали утилиты для преобразования скреплений).
Большинство инструментов SQL IDE имеют некоторый механизм просмотра DDL, хотя DBMS_METADATA засеяна функциональностью базы данных Oracle (для этого не требуется какой-то фантастический, дорогостоящий инструмент).
Ответ 4
Я думаю, что в качестве разработчика интерес представляет собой "выбор", который делает его действительным и исполняемым, а самый простой способ редактирования представления - использовать другое приложение, например, pl/sql Developer или TOAD.
редактирование любого объекта в базе данных оракула текстовым редактором, так как sqlplus.exe занимает много времени для простых задач, и это способ головной боли.
![enter image description here]()
Ответ 5
Вы можете использовать представления словаря данных (V $SQL, V $SQLTEXT), чтобы увидеть введенный SQL.
См. этот связанный вопрос.