Java oracle集合作为函数返回类型

Java oracle集合作为函数返回类型,java,oracle,collections,ibatis,Java,Oracle,Collections,Ibatis,我们有一个数据库函数来缓存序列值。它接受序列对象名称和提取大小,递增序列并返回值。 返回类型是oracle集合 以下是函数使用的db类型的定义: 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 函数返回的值缓存在应用程序端。我们正在使用iba

我们有一个数据库函数来缓存序列值。它接受序列对象名称和提取大小,递增序列并返回值。 返回类型是oracle集合

以下是函数使用的db类型的定义:

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(用户模式)访问函数时,它可以正常工作

有人能帮我解决这个问题吗?

在9iR2 for java中,同义词和对象类型似乎存在一些问题(限制/错误)。谷歌用于ORA-21700和DBMS_PICKLER

我怀疑您在iBatis中使用的JDBC驱动程序中遇到了一些问题,这在SQL Developer中使用的JDBC版本中得到了解决

抓取类似SQuirrel SQL Client的东西,并尝试您用于iBatis的JDBC驱动程序,看看您是否可以复制它。

在9iR2 for java中,同义词和对象类型似乎存在问题(限制/错误)。谷歌用于ORA-21700和DBMS_PICKLER

我怀疑您在iBatis中使用的JDBC驱动程序中遇到了一些问题,这在SQL Developer中使用的JDBC版本中得到了解决


抓取类似SQuirrel SQL Client的东西,并尝试您用于iBatis的JDBC驱动程序,看看您是否可以复制该驱动程序。

尝试在调用“{?=call seq_inc(?)}”时在模式名称前面加前缀。感谢您的回复。函数调用的前缀架构。?=调用USER_SCHEMA.seq_inc(?),同样的问题仍然存在。您是否也在类型名称前加前缀?再次验证。当类型和函数在用户模式中可用时,它可以正常工作:(Samuel,不,我没有为类型显式地在模式名称前面加前缀。iBatis在下面注册参数时会这样做。请尝试在调用“{?=call seq_inc(?)}”时在模式名称前面加前缀。感谢您的回复。Michael。函数调用的前缀架构。?=调用用户_架构。seq _inc(?)相同的问题仍然存在。您是否也在类型名称前加前缀?再次验证。当用户架构中的类型和函数可用时,它工作正常:(Samuel,不,我没有为类型显式地添加模式名前缀。iBatis在注册下面的参数时会这样做。