在甲骨文我已经创建
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
,然后对于每个对象,您可以访问属性IVVALUE
和IVKEY
,您可以通过多种方式进行操作:
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