EMPLOYEE のデータが DRIVER と MECHANIC に存在しないことを確認する PLSQL PROCEDURE を作成したいと考えています。
テストするレコードを 1 つ作成しました。ただし、テスト用に作成されていないレコードで EXEC Verify(2) を実行すると、検証したくないテスト済みのレコードが表示されます。
EMPLOYEE の比較を実行するために選択した EMPLOYEE.E# のセットを使用して PROCEDURE を実行したいのですが、DRIVER と MECHANIC には存在しません。
HEREは私が作成した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;
/