我需要使用 PL/SQL 表类型的参数对过程进行 JDBC 调用。
我正在尝试使用 struct 对象。但我没有做正确的事情。
我收到错误:
ORA-04043: 对象 "scott"."objListStruct"不存在。

这是代码片段:

conn = Application.getDBConnection();
                CallableStatement cStmt = null;
                cStmt= conn.prepareCall("{call package1.procedure1"+"(?)}");
                Struct objListStruct = conn.createStruct("objListStruct",
                                objNameArr.toArray());
                cStmt.setObject(1, objListStruct,Types.STRUCT);

参数“?”对于此程序,类型为:
TYPE t_name IS TABLE OF TABLE1.name%TYPE

任何使这项工作的见解都受到高度赞赏。
谢谢

最佳答案

String[] varStrArr = varArr.toArray(new String[compNameArr.size()]);
OracleCallableStatement cStmt = (OracleCallableStatement)
conn.prepareCall("BEGIN SCHEMA.PACKAGE.procedure(?);END;");
cStmt.setPlsqlIndexTable(1,varStrArr,varStrArr.length,varStrArr.length,
                        OracleTypes.VARCHAR, 50);
cStmt.execute();

上面的代码有效。
更多引用资料可在以下网址获得:
Binding IN Parameters

10-07 12:27