Oracle VARRAY 如何用 Java 术语表示数据?

发布于 2024-09-28 10:55:55 字数 662 浏览 6 评论 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 代码,将从该数组中取出数据,但我不确定它将是什么格式,例如 1John1=John1,John

有什么想法吗?

Slightly broad question here, but here goes

I'm trying to call an Oracle stored procedure, which returns a VARRAY which is of constructed from a ROWTYPE on one of my tables. For simplicity, lets say this table looks like the following :

MY_TABLE
ID   VALUE
-----------
1    John
2    Dave

so I will call a SP that returns the following VARRAY type :

CREATE OR REPLACE TYPE param_array is VARRAY(100) OF MY_TABLE%ROWTYPE;

According to the Oracle Documentation, you can extract this as an array, but my question is : what will the type of the array be, is it an array of Strings, name/value paired strings etc?

I'm creating some Java code that will take data out of this array, but I'm not sure which format it will be, such as 1, John OR 1=John or 1,John

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狼性发作 2024-10-05 10:55:55

从文档:

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

From the docs:

SQL>CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF VARCHAR2(30)
SQL>/

Then create the following function that returns a 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;

It will return an array of strings (VARCHARs) max length 30
it returns emparray which is declared as a varray of varchars (strings)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文