繁体   English   中英

oracle集合作为函数返回类型

[英]oracle collection as function return type

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

这是函数使用的数据库类型的定义:

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的Google

我怀疑您对于iBatis使用的JDBC驱动程序存在一些问题,该问题已解决为用于SQL Developer的JDBC版本。

拿起SQuirrel SQL Client之类的东西,然后尝试使用iBatis的JDBC驱动程序,以查看是否可以复制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM