这里有一个稍微宽泛的问题,但这里有
我正在尝试调用Oracle存储过程,它返回一个VARRAY,它是从我的一个表上的ROWTYPE构造的。为简单起见,我们假设此表如下所示:
MY_TABLE
ID VALUE
-----------
1 John
2 Dave
所以我将调用一个返回以下VARRAY类型的SP:
CREATE OR REPLACE TYPE param_array is VARRAY(100) OF MY_TABLE%ROWTYPE;
根据Oracle Documentation,您可以将其提取为数组,但我的问题是:数组的类型是什么,是字符串数组,名称/值配对字符串等吗
我正在创建一些Java代码来从这个数组中获取数据,但我不确定它将采用哪种格式,例如1
,John
或1=John
或1,John
有什么想法吗?
答案 0 :(得分:1)
来自文档:
SQL>CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF VARCHAR2(30)
SQL>/
然后创建以下函数,返回VARRAY。
CREATE OR REPLACE FUNCTION getEmpArray RETURN EMPARRAY
AS
l_data EmpArray := EmpArray();
CURSOR c_emp IS SELECT ename FROM EMP;
BEGIN
FOR emp_rec IN c_emp LOOP
l_data.extend;
l_data(l_data.count) := emp_rec.ename;
END LOOP;
RETURN l_data;
END;
它将返回一个字符串数组(VARCHAR),最大长度为30 它返回emparray,它被声明为varchars(strings)的varray