我有一个如下所示的存储过程:
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 IS TABLE OF parametro;
如何从java调用build_cursor
过程?
我读到了这个:How to call oracle stored procedure which include user-defined type in java?但我不知道我需要对他的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
);
答案 0 :(得分:2)
Only SQL objects can be referenced by jdbc
, not PL/SQL objects。关联数组是PL / SQL对象,因此您无法从jdbc
“看到”它们。
您可以将包装器PL / SQL函数与SQL对象一起使用(关联数组类似于一个嵌套的索引表和一个嵌套的值表)。
您还可以使用临时表:jdbc
批量插入临时表,包装程序(或PL / SQL块)读取临时表并调用您的过程。