У меня есть успешно скомпилированная процедура в схеме SYSTEM.
create or replace procedure get_file_list as
ns varchar2(1024);
cursor c_my_directory is
select directory_name, directory_path from all_directories where directory_path like '/home/oracle/EDI%';
begin
-- before generating the file list, the temporary table is deleted
delete from edi.temp_EDI_file_list;
for each_directory in c_my_directory loop
-- it reads the contents of my_directory into a table called X$FRBMSFT
sys.dbms_backup_restore.searchfiles (each_directory.directory_path, ns);
for each_file in (select fname_krbmsft as name from X$KRBMSFT) loop
insert into edi.temp_edi_file_list
values (each_directory.directory_name, each_file.name);
end loop;
end loop;
commit;
exception
when others then
raise_application_error (-20001,sqlcode || ' ' || sqlerrm);
end get_file_list;
[.. она была создана в схеме SYSTEM, потому что мне не разрешено предоставлять выбор в X $ FRBMSFT пользователю "edi"].
Я предоставил права на выполнение пользователю "edi" в этой процедуре.[.. подключен как SYSTEM, роль SYSDBA, я выполнил grant execute on system.get_file_list to EDI;
]
Когда я пытаюсь выполнить процедуру (execute system.get_file_list;
) с пользователем "edi", возвращается ошибка
PLS-00905: объект SYSTEM.GET_FILE_LIST недействителен
Может кто-нибудь подсказать, что я делаю не так?
Спасибо,