2013-11-15 46 views
0

我在創建過程時遇到編譯錯誤。創建過程時編譯時出錯ORACLE

這是我procedure.sql

CREATE OR REPLACE PROCEDURE verify IS 
    no_of_duplicates NUMBER:=0; 
BEGIN 
    SELECT COUNT(*) 
    INTO no_of_duplicates 
    FROM EMPLOYEE 
    WHERE E# = (SELECT E# 
       FROM DRIVER 
       WHERE EXISTS (SELECT E# 
           FROM MECHANIC 
           WHERE DRIVER.L# = MECHANIC.L#)); 
    IF no_of_duplicates=0 THEN 
    dbms_output.put_line('OK'); 
    ELSE 
    SELECT E#, NAME 
     FROM EMPLOYEE 
    WHERE E# = (SELECT E# 
        FROM DRIVER 
        WHERE EXISTS (SELECT E# 
            FROM MECHANIC 
           WHERE DRIVER.L# = MECHANIC.L#)); 
    END IF; 
END verify; 
/

我一直堅持這個幾個小時,似乎無法找到任何毛病。誰能幫我這個?謝謝!

+2

您在IF後沒有INTO選擇。檢查你的查詢。並閱讀一本關於遊標和例外的書。 – Art

+0

你的IF條件看起來像一個任務? – halfbit

+0

編譯錯誤是什麼? –

回答

1

當你編譯錯誤,你也可以使用下面的語句來得到錯誤的一個更好的主意:

select * from user_errors where name = 'VERIFY' 

還等什麼@Art說,它看起來像那是因爲你沒有使用INTO在你的第二個選擇語句中。您需要2個變量才能保存E#和名稱

+0

好的。我已經創建了變量來保存e#和名字。那麼我如何顯示它們? –

+0

dbms_output.put_line –

+0

在您的過程中,在if語句後面添加dbms_output.put_line(variable),然後運行該過程 –