2010-10-20 19 views
0

这里稍微宽泛的问题,但在这里Oracle VARRAY如何用Java术语表示数据?

我想调用一个Oracle存储过程,它返回一个从我的表之一的ROWTYPE构造的VARRAY。为简单起见,让我们说这个表如下所示:

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代码将数据移出此阵,但我不相信这将是哪种格式,如1John OR 1=John1,John

任何想法?

+0

你怎么会知道'1'是ID为'John'? – Jimmy 2010-10-20 13:52:40

+0

varrays从1 – Joe 2010-10-20 13:55:33

+0

开始索引它将是一个字符串数组,第一个元素(0)在java(1)中的plsql – Joe 2010-10-20 13:58:54

回答

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被声明为VARCHAR处理的VARRAY(串)