У нас есть функция базы данных для кэширования значений последовательности. Он принимает имя объекта последовательности и размер выборки, увеличивает последовательность и возвращает значения.
Тип возврата - коллекция оракулов.
Вот определение типов дБ, используемых функцией:
create or replace type icn_num_type as object(v_inc_num number);
create or replace type icn_num_type_table as table of icn_num_type; --this is returned
Значения, возвращаемые функцией, кэшируются на стороне приложения. Мы используем ibatis для DAO. Все это работало хорошо, когда функции, типы и объекты последовательности были в одной схеме.
Теперь у нас есть функция, типы и последовательности, определенные в одной родительской схеме. Пользовательская схема имеет синонимы ко всем вышеупомянутым объектам. Я столкнулся со следующей ошибкой:
--- The error occurred while executing query procedure.
--- Check the {? = call seq_inc(?, ?)}.
--- Check the output parameters (register output parameters failed).
--- Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
ORA-06512: at "SYS.DBMS_PICKLER", line 18
ORA-06512: at "SYS.DBMS_PICKLER", line 58
ORA-06512: at line 1
Однако, когда мы получаем доступ к функции из SQLDeveloper (пользовательская схема), она работает нормально.
Может ли кто-нибудь помочь мне в этом вопросе?