我想在Oracle中使用JOOQ調用存儲過程。存儲過程的某些輸入和輸出參數是自定義類型。jooq oracle存儲過程與ARRAY,無效列類型:1111
其中之一的定義是:
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'生成一個類。您不需要摔跤ojdbc API,比如'ArrayDescriptor'和'ARRAY'。你是否可能(意外地)從源代碼生成中排除該類?這可以通過' '發生,或者如果表類型與表中的模式不同,並且您沒有包含兩個模式。 –
嗨盧卡斯,感謝您的及時答覆。我正在使用來生成我將要使用的內容。現在我有一個關於該UDT定義的記錄類。 –
嗨盧卡斯,感謝您的及時答覆。我使用來生成僅用於我要使用的類。現在我爲整個模式生成Java類,並且爲該特定類型看到一個「記錄」類,但不是「表」類。不知道我必須發送什麼java對象。我有一個ArrayList 中的數據。 –