如何获取Java中的pl / sql函数返回的VARRAY

问题描述

我有一个像这样的pl / sql函数

TYPE group_user_collection_t IS VARRAY(1000) OF VARCHAR2(100);
FUNCTION Get_Group_Users_To_Sync(group_id_ VARCHAR2)RETURN group_user_collection_t

然后我像这样从Java调用此函数

try(CallableStatement statement = connection.prepareCall("{? = call <my_API>.Get_Group_Users_To_Sync(?)}")) {
       statement.registerOutParameter(1,java.sql.Types.ARRAY);
       statement.setString(2,groupId);
       statement.execute();
       try(ResultSet rs = statement.getArray(1).getResultSet()) {
           while(rs.next()) {
               userList.add(rs.getString("remote_user_id"));
           }               
       }

但是我遇到了以下异常。

java.sql.SQLException:调用[INFO] [err]处的参数无效 oracle.jdbc.driver.OracleCallableStatement.registerOutParameterInternal(OracleCallableStatement.java:190) [INFO] [err] at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:324) [INFO] [err] at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:516) [INFO] [err] at oracle.jdbc.driver.OracleCallableStatementWrapper.registerOutParameter(OracleCallableStatementWrapper.java:1231) [INFO] [err] at com.ibm.ws.rsadapter.jdbc.WSJdbcCallableStatement.registerOutParameter(WSJdbcCallableStatement.java:846) [INFO] [err] at com.ifsworld.projection.RemoteAssistGroupHandlingActionsImpl.getGroupUsersToSync(RemoteAssistGroupHandlingActionsImpl.java:71) [INFO] [err] at com.ifsworld.projection.RemoteAssistGroupHandlingActionsImpl.syncExpertGroup(RemoteAssistGroupHandlingActionsImpl.java:55) com.my.consume.Consume.createUser(Consume.java:138)上的[INFO] [err] [INFO] [err] at com.my.consume.Consume $ Proxy $ _ $$ _ WeldClientProxy.createUser(未知 来源)[INFO] [err]位于 jdk.internal.reflect.GeneratedMethodAccessor749.invoke(未知来源) [INFO] [err] at java.base / java.lang.reflect.Method.invoke(Method.java:566)[INFO] [err] at com.ibm.ws.jaxrs20.cdi.component.JaxRsFactoryImplicitBeanCDICustomizer.serviceInvoke(JaxRsFactoryImplicitBeanCDICustomizer.java:339) [内部类]的[INFO] [err] java.base / java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [INFO] [err] at java.base / java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:628) [INFO] [err],位于java.base / java.lang.Thread.run(Thread.java:834)

从Java中的pl / sql函数获取VARRAY返回的正确方法是什么? 请帮我。 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...