2013-07-11 26 views
0

所以我真的不知道爲什麼我的光標不工作。選擇語句工作正常,所以我不知道爲什麼SQL服務器拋出錯誤。 For循環有一個隱式的打開和關閉,所以這也不應該是問題。有任何想法嗎?PL/SQL無效光標錯誤

DECLARE 
    var_lname customer.c_last%TYPE; 
    var_fname customer.c_first%TYPE; 
    var_addr customer.c_address%TYPE; 
    var_phone customer.c_dphone%TYPE; 
    CURSOR expl_cursor IS SELECT c_last, c_first, c_address, c_dphone from customer; 
    cust_record expl_cursor%ROWTYPE; 

BEGIN 

    DBMS_OUTPUT.PUT_LINE('ClearWater Traders Mailing List'); 
    FOR cust_record IN expl_cursor 
    LOOP 
     FETCH expl_cursor INTO cust_record; 
     var_lname := cust_record.c_last; 
     var_fname := cust_record.c_first; 
     var_addr := cust_record.c_address; 
     var_phone := cust_record.c_dphone; 
     DBMS_OUTPUT.PUT_LINE(var_lname || ' ' || var_fname || ' ' || 
     var_addr || ' ' || var_phone); 
    END LOOP; 
END; 

這裏的錯誤:

ERROR位於第1行: ORA-01001:無效CUR ORA-06512:在第15行

回答

2

啊我解決了這個。無法在for循環中執行FETCH。由於光標自動增加。

+1

是的。您正在混合兩種方式來循環遊標結果集。你明確地'打開'/'fetch' /'close',或者使用隱式'for ... in ... loop'版本。 [更多文檔資料](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/static.htm#BABDHAED)。 –

+0

+1 - 解決了自己的問題。 –

+0

洛爾感謝鮑勃。 –