Пакет создан успешно.Но когда дело доходит до тела пакета, оно выдает «Тело пакета, созданное с ошибкой компиляции». Но я не вижу никакой ошибки.
Ошибка похожа на ORA-04063: тело пакета «VENDORDB.P_ENLD0055_VA» имеетошибки ORA-06508: PL / SQL: не удалось найти вызываемый программный модуль: "VENDORDB.P_ENLD0055_VA"
Я попытался дать избыточное количество гранта для пользователя и для обновления базы данных, но ошибка все еще не разрешена
create or replace package vendordb.p_enld0055_va is
PROCEDURE sp_group_id_update(p_batch_id NUMBER,
p_file_name VARCHAR2,
p_group_id VARCHAR2);
end p_enld0055_va;
/
create or replace package body vendordb.p_enld0055_va is
PROCEDURE sp_group_id_update(p_batch_id NUMBER,
p_file_name VARCHAR2,
p_group_id VARCHAR2) is
v_batch_id VARCHAR2(100) := p_batch_id;
v_file_name VARCHAR2(100) := p_file_name;
v_group_id VARCHAR2(100) := p_group_id;
type t_TBL_row_ID IS TABLE OF ROWID;
v_row_ID t_TBL_row_ID;
cursor CUR_PPL is
select
h.rowid
from VENDORDB.CLAIM_PROF_HDR h
where batch_id = v_batch_id ;
Begin
open CUR_PPL;
loop
fetch CUR_PPL
bulk collect into v_row_ID
limit 1000
;
exit when v_row_ID.count()=0;
forall i in 1 .. v_row_ID.count()
UPDATE VENDORDB.CLAIM_PROF_HDR h
SET group_id = CASE
WHEN EXISTS (select file_name from
nemis.file_control where batch_id = v_batch_id and file_name like
v_file_name) THEN v_group_id
ELSE NULL
END
where h.rowid = v_row_ID(i);
commit;
end loop;
close CUR_PPL ;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('UNEXPECTED ERROR OCCURED');
ROLLBACK;
end;
end p_enld0055_va;
/