这里的问题有点广泛,但是这里

我试图调用一个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代码,这些数据将从该数组中取出数据,但是我不确定它是哪种格式,例如1John1=John1,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

09-10 08:10