2013-12-16 50 views
1

你能幫助我,想不通這一個,我收到以下錯誤信息:對於光標連接表

ORA-06550: line 4, column 32: 
PL/SQL: ORA-00942: table or view does not exist 
ORA-06550: line 3, column 8: 
PL/SQL: SQL Statement ignored 
ORA-06550: line 11, column 32: 
PLS-00364: loop index variable 'V_CUR_SPOKENLANG' use is invalid 
ORA-06550: line 11, column 11: 
PL/SQL: Statement ignored 

試圖找到解決方案,甲骨文論壇和 http://www.techonthenet.com/oracle/errors/ora00942.php

而且試圖通過這個例子: http://www.w3schools.com/sql/sql_join_inner.asp

但獲得基本相同的結果。

我可以通過SELECT訪問這兩個表格。

的代碼,我有問題:

DECLARE 
CURSOR cur_spokenlang IS 
    SELECT country_id, country_name, language_id 
     FROM wf_countries c, wf_spoken_langugages sl 
     WHERE c.country_id = sl.country_id;    
BEGIN 
FOR v_cur_spokenlang IN cur_spokenlang 
    LOOP 
     DBMS_OUTPUT.PUT_LINE(v_cur_spokenlang.country_name || ' ' || 
          v_cur_spokenlang.country_id || ' ' || 
          v_cur_spokenlang.language_id); 
END LOOP; 
END; 

預先感謝您:)

+0

你可以運行光標本身沒有問題的選擇嗎?您是否缺少模式前綴? – Carth

+0

我可以使用SELECT分別訪問這兩個表。我認爲這可能是一個連接錯誤,嘗試在FROM子句中的表名前面的模式前綴,也沒有運氣。 – Novice

+0

請看我的答案,檢查該表的權限,如果它是通過角色。 –

回答

1

要麼你提到的表是INVALID(可能是invalid schema運行或沒有PUBLIC SYNONYM)。

還注意到country_id是不明確的。需要c.country_id

請確保您有權直接向用戶提供,而不是通過ROLES。因爲要通過PL/SQL進行訪問,用戶標識需要在表上具有直接的SELECT權限。

1

如果您在windows上使用SQLTools IDE。 http://www.sqltools.net/

每當出現錯誤時,光標會直接跳轉到錯誤所在的位置 。