коллекция оракулов как тип возврата функции - PullRequest
2 голосов
/ 14 мая 2011

У нас есть функция базы данных для кэширования значений последовательности. Он принимает имя объекта последовательности и размер выборки, увеличивает последовательность и возвращает значения. Тип возврата - коллекция оракулов.

Вот определение типов дБ, используемых функцией:

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 (пользовательская схема), она работает нормально.

Может ли кто-нибудь помочь мне в этом вопросе?

1 Ответ

0 голосов
/ 21 мая 2011

Кажется, были проблемы (ограничения / ошибки) с синонимами и типами объектов еще в 9iR2 для Java.Google для ORA-21700 и DBMS_PICKLER

Я подозреваю, что у вас возникли проблемы с драйвером JDBC, используемым для iBatis, который разрешен для версии JDBC, используемой для разработчика SQL.

Получите что-то вродеSQuirrel SQL Client и попробуйте драйвер JDBC, который вы используете для iBatis, чтобы увидеть, сможете ли вы воспроизвести.

...