Я пытаюсь написать процедуру, которая создает или заменяет представление, использующее пользовательскую функцию, которую я создал.Однако, когда я запускаю процедуру, я получаю сообщение об ошибке:
ORA-00942: таблица или представление не существует
ORA-06512: в "O015596H.CALCULATE_PAY_DUE", строка 23
ORA-06512: в строке 2
CALCULATE_PAY_DUE
- это название моей процедуры.Он берет данные из таблицы с именем STAFF_HOURS
и использует UDF с именем CALCULATE_STAFF_PAY
.Я не понимаю, почему он ищет таблицу или представление с именем CALCULATE_PAY_DUE
?
Я попытался запустить процедуру с обоими из них, но оба выдают одну и ту же ошибку:
BEGIN
CALCULATE_PAY_DUE;
END;
BEGIN
CALCULATE_PAY_DUE();
END;
Вот код для процедуры:
CREATE OR REPLACE PROCEDURE CALCULATE_PAY_DUE
IS
STAFF_ID NUMBER;
FIRST_NAME VARCHAR2(500);
LAST_NAME VARCHAR2(500);
HOURS_WORKED NUMBER;
MAX_HOURS NUMBER;
HOURLY_RATE NUMBER;
OVERTIME_RATE NUMBER;
WEEK_NUM NUMBER;
TOTAL_DUE NUMBER;
CREATE_VIEW_STMNT VARCHAR2(5000);
CURSOR C1 IS
SELECT STAFF_ID, FIRST_NAME, LAST_NAME, HOURS_WORKED, MAX_HOURS, HOURLY_RATE, OVERTIME_RATE, WEEK_NUM, CALCULATE_WAGES(STAFF_ID, WEEK_NUM) AS "TOTAL_DUE" FROM STAFF_HOURS;
BEGIN
OPEN C1;
FETCH C1 INTO STAFF_ID, FIRST_NAME, LAST_NAME, HOURS_WORKED, MAX_HOURS, HOURLY_RATE, OVERTIME_RATE, WEEK_NUM, TOTAL_DUE;
CREATE_VIEW_STMNT := 'CREATE OR REPLACE VIEW PAY_DUE AS SELECT * FROM C1';
EXECUTE IMMEDIATE CREATE_VIEW_STMNT;
END;