在Oracle中,是否有一種簡單的方法來完全打開視圖?例如:如果我有一個視圖由更多視圖上的選擇組成,是否有一些方法可以將它解開直接在實際表上選擇?完全打開視圖
Q
完全打開視圖
3
A
回答
2
獲取您的視圖的查詢文本。
SELECT text FROM dba_views WHERE owner = 'the-owner' AND view_name = 'the-view-name';
解析。在查詢文本中搜索視圖名稱。
獲取找到的每個視圖名稱的查詢文本。 (請參閱項目1.)
將查詢中的每個視圖名稱替換爲相關的查詢文本。
以遞歸方式執行此操作,直至找不到更多視圖。
簡單嗎?
編輯:上述指示並不做所有要求。想想這個多一點,它變得毛茸茸的,長腿,也許是另一隻手臂。查找可能是精心設計的函數和子查詢的列名稱和列名稱。將它們全部與連接和子句重新組合在一起。結果查詢可能看起來非常難看。
Oracle中的某處可能有些東西實際上是展開視圖。我不知道。我很高興我沒有在Oracle中使用太多的觀點。
2
in-line views的概念可以用來做到這一點。假設有這些2次:
create or replace view london_dept as
select * from dept
where loc = 'LONDON';
和
create or replace view london_mgr as
select * from emp
where job='MANAGER'
and deptno in (select deptno from london_dept);
在第二視圖的SQL中,參考以查看london_dept可以通過使用SQL從london_dept視圖定義的在線視圖來代替如下:
select * from emp
where job='MANAGER'
and deptno in (select deptno from (select * from dept
where loc = 'LONDON'));
當然,你現在可以看到,過於冗長,可以簡化爲:
select * from emp
where job='MANAGER'
and deptno in (select deptno from dept where loc = 'LONDON');
最後,湯姆凱特創造views of views
0
直到甲骨文12.1的優點和缺點一些建議的正確答案是否定的,有沒有簡單的方法。現在,在12.1中有DBMS_UTILITY.EXPAND_SQL_TEXT:在Oracle Database 12c第1版(12.1)中將SQL引用擴展爲視圖就是這樣做的。查看documentation of dbms_utility
相關問題
- 1. 打開視圖
- 2. .Rmd文件打開爲完全空的
- 3. 知道設備何時完全打開
- 4. fopen不能完全打開文件
- 5. VBS打開圖片全屏
- 6. 地圖視圖沒有完全加載
- 7. Android確保列表視圖展開後完全可見
- 8. ShadowBox Js - 全屏直接打開視頻
- 9. 如何打開全屏視頻?
- 10. 打開第二個視圖
- 11. 自動打開透視圖
- 12. 打開tabbarcontroller的視圖
- 13. 從TableView打開視圖
- 14. 打開從視圖模型
- 15. 打開網頁視圖
- 16. 用透視圖打開MTrimmedWindow完成的多個實例
- 17. 圖片地圖新視圖打開
- 18. 如何以全屏閱讀視圖打開Microsoft Word文檔?
- 19. 完全列表視圖顯示行
- 20. 撤消完全清除視圖
- 21. uwp完全關閉輔助視圖
- 22. 列表視圖不滾動完全android
- 23. 從內存中完全刪除視圖
- 24. removeAllViews不能完全刪除視圖
- 25. 如何完全重新加載視圖?
- 26. 完全不同的移動視圖
- 27. 如何完全自定義spree視圖?
- 28. 視圖沒有完全釋放
- 29. 等待視圖完全更新:如何?
- 30. 如何使用javascript打開完全不同圖像的彈出圖像?