2012-11-26 44 views
0

我喜歡創建一個PLSQL PROCEDURE來驗證EMPLOYEE的數據在DRIVER和MECHANIC中不存在。將PL/SQL中的數據與我想比較的輸入進行比較

我已創建1條記錄進行測試。但是,當我運行EXEC驗證(2)的記錄,而不是我創建的測試它仍然會顯示不是我想驗證的測試記錄。

我喜歡用EMPLOYEE.E#集執行PROCEDURE,我選擇運行EMPLOYEE的比較在DRIVER和MECHANIC中不存在。

這是我創建的PLSQL。

CREATE OR REPLACE PROCEDURE Verify(enum IN EMPLOYEE.E#%TYPE) IS 
eNo DRIVER.E#%TYPE; 
eName EMPLOYEE.NAME%TYPE; 

CURSOR c1 IS 
    SELECT DRIVER.E#, EMPLOYEE.NAME 
    FROM DRIVER 
    INNER JOIN EMPLOYEE 
    ON EMPLOYEE.E# = DRIVER.E# 
    WHERE 
    EXISTS (SELECT * FROM MECHANIC WHERE DRIVER.E# = MECHANIC.E#); 

BEGIN 
    OPEN c1; 
    FETCH c1 into eNo, eName; 
    IF c1%NOTFOUND THEN 
     CLOSE c1;    
     DBMS_OUTPUT.PUT_LINE('No Records Found'); 

    ELSE 
     CLOSE c1;   
     DBMS_OUTPUT.PUT_LINE('E#| NAME'); 
     FOR EmpRecord IN c1 
     LOOP 
      DBMS_OUTPUT.PUT_LINE(EmpRecord.E# || ' | ' || EmpRecord.NAME || ' is in     
       driver and mechanic.'); 
     END LOOP; 
    END IF; 

END; 
/
+0

歡迎來到StackOverflow。起初,你並沒有在程序中使用你的參數,其次,你的代碼不能反映你說的話,你需要再讀一遍,並改變它,讓你的GrandMa明白你想說什麼。 – jachguate

回答

0

試試這個代碼
CURSOR c1 IS
SELECT EMPLOYEE.E# , EMPLOYEE.NAME FROM EMPLOYEE WHERE EMPLOYEE.E#=enum AND NOT EXISTS (SELECT 'x' FROM MECHANIC a,DRIVER b WHERE a.E# = b.E# and a.E#=EMPLOYEE.#E);
我還沒有測試這一個,但我希望它能幫助。

+0

感謝您的幫助。我編輯你的查詢升技,它的工作原理。 – letian

相關問題