簡體   English   中英

需要更新Oracle視圖,但基本表不存在

[英]Need to update an Oracle view, but the base table doesn't exist

我正在嘗試對oracle數據庫上的視圖進行非常小的更改,但令我感到困惑的是,我要更改的視圖的基本表/視圖似乎不存在。

首先,我這樣做:

從all_views中選擇文本,其中view_name ='(視圖名稱)';

並獲得了視圖文本,當然是這樣的:

選擇(字段)來自(表)

嘗試單獨運行此查詢將返回一個錯誤,指出該表或視圖不存在。 搜索表名列表和all_表上的視圖將不返回任何內容。 使用相同的源select語句創建一個新視圖會告訴我,因為該表或視圖不存在,所以無法創建該視圖。 現在,這是一個生產數據庫,因此應該可以正常工作,因為我可以使用現有視圖。 我對oracle數據庫沒有太多經驗,因此我可能在這里缺少一些東西。

我敢打賭,該視圖位於另一個架構中。 這是否返回與您的第一個查詢相同的結果:

select text from all_views where view_name='(view name)' and owner = user;

如果沒有返回任何行,則需要找到視圖的所有者:

select owner from all_views where view_name = '(view_name)';

並將您的SQL更改為

select (fields) from (view_owner).(table);

即使沒有基表,也可以通過“ FORCE”選項創建視圖(“ NO FORCE”為

默認值)通過這種方式:

CREATE FORCE VIEW test_view AS

SELECT c1, c2 FROM test_table; -- table, which does not exist yet.

由於我們未使用FORCE選項,因此未創建視圖。但是,嘗試訪問

視圖給出錯誤,因為表TEST_TABLE還不存在。

通過使用“ FORCE”,我們還可以通過雙表(oracle的默認表)創建視圖。

1-示例:創建力視圖v1,從對偶中選擇a,b,c;

警告:創建視圖時出現編譯錯誤。

2-示例:創建強制視圖v2作為select * from dual;

答:視圖已創建。

哇沒關系 他們甚至都不要求我這樣做。 我錯過了原始電子郵件中的那部分。

您應該使用force關鍵字。

create force view my_view as elect column1 from table_test -- table is not exists here..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM