【问题标题】:How does Oracle VARRAY represent data in Java terms?Oracle VARRAY 如何用 Java 术语表示数据?
【发布时间】:2010-10-20 13:48:21
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

  • 你怎么知道1John 的ID?
  • varrays 从 1 开始索引
  • 它将是一个字符串数组,java中的第一个元素(0)(plsql中的1)

标签: java arrays oracle varray


【解决方案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;

它将返回一个最大长度为 30 的字符串数组(VARCHARs) 它返回 emparray,它被声明为 varchars (strings) 的 varray

【讨论】:

    猜你喜欢
    • 2014-02-15
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2021-02-20
    • 2014-12-25
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多