0
我有一個查詢,如下一個數據庫鏈接來從兩個表中的數據:無法從分貝以上鍊接訪問數據的視圖獲取數據
SELECT a.ID, a.NAME, b.address
FROM [email protected] a, [email protected] b
WHERE a.ID = b.ID;
這工作完全正常。然後,我爲此創建一個視圖,如下所示:
CREATE VIEW myview
AS
SELECT a.ID, a.NAME, b.address
FROM [email protected] a, [email protected] b
WHERE a.ID = b.ID;
視圖已成功創建。但是,當我從視圖中選擇數據如下:
SELECT *
FROM myview
我收到錯誤,如:
ORA-00942: table or view does not exist
ORA-02063: preceding line from MYLINK
什麼很可能是問題?
編輯:
嘗試不同的方法,並最終得到不同的錯誤。我在這裏發佈準確的查詢和最新的錯誤:
CREATE OR REPLACE VIEW plan_view
AS
WITH plan_name AS
(SELECT fcr.argument1 AS plan_name, fcr.request_id AS request_id
FROM [email protected] fcr
WHERE argument1 IN
('E10', 'E20', 'E40', 'E60L', 'EDC', 'PS1', 'S')
CONNECT BY PRIOR fcr.request_id = fcr.parent_request_id
START WITH request_id = -- '58043920'
(SELECT MAX (request_id) AS request_id
FROM [email protected]
WHERE description = 'Mail Program'
AND actual_start_date >=
TO_DATE ( TO_CHAR (TRUNC (SYSDATE - 1),
'mm-dd-yyyy'
)
|| '05:00:00 PM',
'MM-DD-YYYY HH:MI:SS PM'
)
AND actual_start_date < SYSDATE)),
e10 AS
(SELECT TRIM
(BOTH ' ' FROM (SELECT meaning
FROM [email protected]
WHERE lookup_type = 'CP_STATUS_CODE'
AND lookup_code = fcr.status_code
AND view_application_id = 0)
) status,
TRIM
(BOTH ' ' FROM (SELECT meaning
FROM [email protected]
WHERE lookup_type = 'CP_PHASE_CODE'
AND lookup_code = fcr.phase_code
AND view_application_id = 0)
) phase,
fcr.request_id AS rid,
fcr.actual_start_date AS start_date,
fcr.actual_completion_date AS completion_date
FROM [email protected] fcr
CONNECT BY PRIOR fcr.request_id = fcr.parent_request_id
START WITH request_id = (SELECT request_id
FROM plan_name
WHERE plan_name IN ('E10')))
SELECT 'E10' "PLAN_NAME", (SELECT MIN (start_date)
FROM e10) "START_DATE",
(SELECT COUNT (rid)
FROM e10)
FROM DUAL
當我嘗試直接從查詢中選擇,我得到正確的輸出。但經過我創建視圖,並嘗試select * from plan_view
我得到下面的錯誤:
ORA-00604: error occurred at recursive SQL level 1
ORA-00904: "FCR"."REQUEST_ID": invalid identifier
@zephrus:如果你正在創建視圖,那麼爲什麼不在遠程數據庫上查看,然後使用數據庫鏈接訪問視圖? –
這實際上是這裏的問題。我無法在父數據庫中創建視圖 - 就像一些內部策略一樣。而在第二個數據庫中創建的這個視圖也可以通過其他數據庫訪問,也可以通過dblink訪問。 – zephyrus
您應該也會遇到這樣的錯誤:'ORA-00998:必須將該表達式命名爲列別名',因爲第三列沒有名稱。您可能希望將示例代碼縮小到仍然會導致錯誤的最小可能示例。 –