java - JDBC 调用 Oracle 存储过程,参数类型为 PL SQL 表

标签 java oracle jdbc plsql database-cursor

我需要使用 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/

相关文章:

java - 创建过程中返回空白对象的ID

java - 使用 hibernate @GeneratedValue 时手动插入

mysql - 将 MySQL 函数转换为 Oracle PL/SQL

oracle - 如何在oracle sql developer中选择存储过程输出参数作为表

java - 插入希伯来语单词时的问号

Java JDBC 工作流

java - 可以找到错误

java - 仅使用扫描仪读取应用程序中的txt文件

java - linux 命令的输出未在 java 中捕获

java - 获取受影响的行数