问题描述
// 包
创建或替换包P_DEFINE_TYPE3为
类型T_CODE是char(1) 由binary_integer索引的表;
过程P_TEST3 (T_CODE中的P_CODE);
结束;
// 包体
创建或替换包体p_define_type3是
过程p_test3 (T_CODE中的p_code) 为
开始
null;
结束;
结束;
// 在Java中使用oracle.jdbc.driver.OracleDriver
// cs是OracleCallableStatement的对象
cs.setPlsqlIndexTable(1,新字符串 []{“1”},1,1,OracleTypes.CHAR,1);
// 调用PLS-00418异常: 数组绑定类型必须匹配PL/SQL表行类型
cs.exe可爱 ();
// 谢谢。
创建或替换包P_DEFINE_TYPE3为
类型T_CODE是char(1) 由binary_integer索引的表;
过程P_TEST3 (T_CODE中的P_CODE);
结束;
// 包体
创建或替换包体p_define_type3是
过程p_test3 (T_CODE中的p_code) 为
开始
null;
结束;
结束;
// 在Java中使用oracle.jdbc.driver.OracleDriver
// cs是OracleCallableStatement的对象
cs.setPlsqlIndexTable(1,新字符串 []{“1”},1,1,OracleTypes.CHAR,1);
// 调用PLS-00418异常: 数组绑定类型必须匹配PL/SQL表行类型
cs.exe可爱 ();
// 谢谢。
专家解答
Java不是我的强点,但我认为您需要一个嵌套表而不是关联数组,即
CREATE TYPE string_array AS TABLE OF VARCHAR2(4000); / CREATE OR REPLACE PROCEDURE array_proc( p_list string_array ) AS BEGIN FOR i IN 1..p_list.COUNT LOOP null; END LOOP; END; / Array array = ((OracleConnection) connection).createOracleArray("STRING_ARRAY", data); CallableStatement statement = connection.prepareCall("{call array_proc(?)}"); statement.setArray(1, array); statement.execute();复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。