暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

无法在setPlsqlIndexTable中使用OracleTypes.CHAR

ASKTOM 2019-07-12
234

问题描述

// 包
创建或替换包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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论