0

这里有点宽泛的问题,但这里有

我正在尝试调用一个 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 文档,您可以将其提取为数组,但我的问题是:数组的类型是什么,它是字符串数组、名称/值配对字符串等吗?

我正在创建一些 Java 代码,这些代码将从该数组中取出数据,但我不确定它将是哪种格式,例如1JohnOR1=John1,John

有任何想法吗?

4

1 回答 1

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(字符串)的 varray

于 2010-10-20T13:55:05.357 回答