在甲骨文我已经创建

create type INTERFACE_VALUES as OBJECT (
IVKEY VARCHAR2(32),
IVVALUE VARCHAR2(250)


);



create type T_INTERFACE_VALUES as TABLE OF INTERFACE_VALUES;


从Java方面,我通过将map转换为Array将一个MAP作为输入传递给存储过程。

并且我已经创建了一个“存储过程”来接受此映射作为输入参数。


PROCEDURE S_MAP_PARAMETERS(   pVALUES IN T_INTERFACE_VALUES   ) AS
 ???

  
  END S_MAP_PARAMETERS;


所以我需要在SQL中读取pVALUES,我该怎么做?

谢谢

最佳答案

Oracle中的嵌套表类型不是键值集合。因此,您需要遍历表pValues,然后对于每个对象,您可以访问属性IVVALUEIVKEY,您可以通过多种方式进行操作:

1-使用TABLE功能通过光标

CURSOR iterate as
SELECT *
  FROM TABLE(pValues)


然后在你的代码中

For Rec in iterate
loop
    --for example
    DBMS_OUTPUT.PUT_LINE(rec.IVVALUE)
end loop;


2-使用嵌套表count函数一次循环一个项目:

For indx in 1..pValues.COUNT
Loop
 --access it using indx pvalues(indx)
 --for example
 DBMS_OUTPUT.PUT_LINE(pvalues(indx).IVVALUE)

end loop

08-07 06:32