我需要使用 PL/SQL 表类型的参数对过程进行 JDBC 调用。 我正在尝试使用结构对象。但是我没有做正确的事情。 我收到错误: 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
关于java - JDBC 调用 Oracle 存储过程,参数类型为 PL SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711446/