Кажется, вам нужно преобразовать в:
DECLARE
-- DEPT_ID DEPARTMENTS.DID%TYPE;
-- DEPT_NAME DEPARTMENTS.DEPARTMENT_NAME%TYPE;
-- D_MID DEPARTMENTS.MANAGER_ID%TYPE;
-- D_LID DEPARTMENTS.LOCATION_ID%TYPE;
CURSOR C2 IS SELECT * FROM DEPARTMENTS WHERE DID=1;
D_ROW C2%ROWTYPE;
BEGIN
OPEN C2;
LOOP
FETCH C2 INTO D_ROW;
EXIT WHEN C2%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(D_ROW.DID||' | '||D_ROW.DEPARTMENT_NAME||' | '||
D_ROW.MANAGER_ID||' | '||D_ROW.LOCATION_ID);
END LOOP;
CLOSE C2;
END;
/
те локальные переменные, которые не нужны, потому что ссылки на их связанные столбцы уже существуют в C2%rowtype
, и они должны вызываться D_ROW
симена столбцов.Ошибка возникает из-за использования локальных переменных вместо этих столбцов после префикса D_ROW.
.Например,
DBMS_OUTPUT.PUT_LINE(D_ROW.DEPT_ID||' | '||D_ROW.DEPT_NAME||' | '||
D_ROW.D_MID||' | '||D_ROW.D_LID);
преобразовано в
DBMS_OUTPUT.PUT_LINE(D_ROW.DID||' | '||D_ROW.DEPARTMENT_NAME||' | '||
D_ROW.MANAGER_ID||' | '||D_ROW.LOCATION_ID);
Демо