Ответ 1
Похоже, что таблица wg не существует. При обновлении до правильного имени таблицы компиляция работает без ошибок. Сообщение от компилятора таблицы не будет наиболее полезным.
У меня есть следующая небольшая функция, которая не компилируется:
function f_query_01 Return interval Day to second is
start_time timestamp(3);
end_time timestamp(3);
time_diff interval Day to second;
c_query_number number;
begin
start_time := systimestamp;
select count(*) into c_query_number from wg; <--This is the line that errors out
end_time := systimestamp;
time_diff := start_time - end_time;
return time_diff;
end f_query_01;
Компилятор дает мне следующие ошибки:
Error(29,3): PL/SQL: SQL Statement ignored
Error(29,44): PL/SQL: ORA-04044: procedure, function, package, or type is not allowed here
Что вызывает эту ошибку и как ее исправить?
Похоже, что таблица wg не существует. При обновлении до правильного имени таблицы компиляция работает без ошибок. Сообщение от компилятора таблицы не будет наиболее полезным.
CREATE OR REPLACE FUNCTION f_query_01
RETURN NUMBER
IS
BEGIN
DECLARE
c_query_number NUMBER DEFAULT NULL;
start_time DATE DEFAULT NULL;
end_time DATE DEFAULT NULL;
time_diff NUMBER DEFAULT NULL;
BEGIN
SELECT CAST (SYSTIMESTAMP AS DATE) INTO start_time FROM DUAL;
SELECT COUNT (*) INTO c_query_number FROM ws;
SELECT CAST (SYSTIMESTAMP AS DATE) INTO end_time FROM DUAL;
time_diff := start_time - end_time;
RETURN time_diff;
END;
END f_query_01;