这里的问题有点广泛,但是这里
我试图调用一个Oracle存储过程,该存储过程返回一个VARRAY,该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
有任何想法吗?
最佳答案
从文档:
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;
它将返回最大长度为30的字符串数组(VARCHAR)
它返回emparray,该数组被声明为varchars(字符串)的varray