Я новичок в oracle, помогите, пожалуйста.
Я написал функцию, похожую на здесь в схеме B, с небольшими изменениями.
Когда я запускаю запросиз функции выше, в schemaA, она работает нормально и возвращает последовательность.
select schemaB.sequence_name_seq.nextVal from dual;
Запуск функции из схемы schemaB возвращает последовательность, как и ожидалось.
Однако, когда я пытаюсь получить доступ кта же функция (содержащая вышеупомянутый запрос) из schemaA выдает мне ошибку: «ORA-00904: неверный идентификатор»
Я предоставил привилегии EXECUTE для userA schemaA (подтверждено из таблицы 'DBA_TAB_PRIVS').
Функция:
create or replace Function nextSeq
(
tableName in VARCHAR2
)return NUMBER as
nextNum Number;
begin
EXECUTE IMMEDIATE 'select '||tableName||'_SEQ.nextval from dual' into nextNum;
return nextNum;
END nextSeq;
Для вызова:
select nextSeq('SCHEMAB.TABLENAME') from dual;