如何从Java调用的Oracle关联数组的程序(How to call a procedure wi

2019-08-01 04:32发布

我有一个存储过程是这样的:

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;

我怎样才能调用build_cursor从Java程序?

我这样说的: 如何调用Oracle存储过程,其中包括在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
);

Answer 1:

只有SQL对象可以通过引用jdbc ,不是PL / SQL对象 。 关联数组PL / SQL对象,所以你将不能够从“看到”他们jdbc

可以使用与SQL对象的包装PL / SQL函数(关联数组类似于指标之一嵌套表和值中的一个嵌套表)。

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



文章来源: How to call a procedure with associative arrays in Oracle from Java