Jdbc 如何从Java调用Oracle中具有关联数组的过程

Jdbc 如何从Java调用Oracle中具有关联数组的过程,jdbc,oracle10g,Jdbc,Oracle10g,我有一个如下所示的存储过程: TYPE ref_cursor IS REF CURSOR; TYPE parametro IS RECORD ( nombre VARCHAR2(50), -- I want to remove this value and make it the key of the table instead. valor VARCHAR2(32000), tipo VARCHAR2(1), sent

我有一个如下所示的存储过程:

TYPE ref_cursor IS REF CURSOR;    
TYPE parametro IS RECORD (
    nombre      VARCHAR2(50), -- I want to remove this value and make it the key of the table instead.
    valor       VARCHAR2(32000),
    tipo        VARCHAR2(1),
    sentencia   VARCHAR2(32000)
);
TYPE parametros IS TABLE OF parametro INDEX BY VARCHAR2(50);

PROCEDURE build_cursor (
    params IN parametros
    results OUT ref_cursor
);
在build_cursor过程中,我希望能够通过键访问表的内容

parametros('key');
然而,我不知道如何从Java构建关联数组,我只看到了简单数组的示例,即:
TYPE parametros是parametro的表

如何从java调用
build\u cursor
过程

我读了这篇文章:但我不知道我必须对他的java示例做什么更改才能创建关联数组;当前元素的键放在哪里

这是来自Oracle的工作测试

params('key').nombre        := 'key'; -- I want this to be removed because it's the key.
params('key').valor         := 'Roger';
params('key').tipo          := 'V';
params('key').sentencia     := 'Something';
-- Call the procedure
pk_sql_utils.build_cursor(
    params => params,
    results => :results
);
。关联数组是PL/SQL对象,因此您无法从
jdbc
中“查看”它们

可以对SQL对象使用包装器PL/SQL函数(关联数组类似于一个嵌套的索引表和一个嵌套的值表)


您还可以使用临时表:
jdbc
批量插入临时表,包装过程(或PL/SQL块)读取临时表并调用您的过程。

我最后完成了包装函数,将嵌套表转换为关联数组,感谢您的帮助。