gpt4 book ai didi

java - jooq oracle 存储过程与 ARRAY,无效的列类型 : 1111

转载 作者:太空宇宙 更新时间:2023-11-04 13:26:55 26 4
gpt4 key购买 nike

我正在尝试使用 JOOQ 调用 Oracle 中的存储过程。存储过程的一些输入和输出参数是自定义类型。

其中之一的定义是:

CREATE OR REPLACE TYPE "TAB_VARCHAR2_500" is table of varchar2(500);

我以这种方式创建 oracle.sql.ARRAY 类型:

ArrayDescriptor ard=ArrayDescriptor("TAB_VARCHAR2_500",connection);

//this is my object of the stores procedure, generated by jooq

aimws.setPDataDesc(new oracle.sql.ARRAY(ard,connection,lineData.toArray()));

aimws.execute(jooq.configuration());

但是当我执行时,我得到了这个(即使我将值设置为空):

SQL state [99999]; error code [17004]; Invalid column type: 1111; nested exception is java.sql.SQLException: Invalid column type: 1111

在 JOOQ 为该存储过程生成的 java 类中,类型为

public static final Parameter<Object> P_DATA_DESC = createParameter("P_DATA_DESC", org.jooq.impl.DefaultDataType.getDefaultDataType("TABLE"), false);

我正在使用 Spring 将应用程序部署为 jboss 中的 EAR 项目

我做错了什么?我必须在 java 中创建什么样的对象?

最佳答案

您可能在代码生成期间未包含 TAB_VARCHAR2_500 类型,这就是生成器输出中缺少该类型的原因。一旦让生成器生成此类型,您就可以将其用作数组的包装器。通常:

aimws.setPDataDesc(new TabVarchar2_500Record(lineData));
aimws.execute(jooq.configuration());

关于java - jooq oracle 存储过程与 ARRAY,无效的列类型 : 1111,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32561589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com