0

我在 Oracle 11g 数据库中构建了一个架构 RTRD_W,其中包含一个表 rtrd_pri,该表具有一个 NOMNL 列,该列的类型定义为VARRAY(10) OF KPS_ADM.NUMBER_T(定义为 KPS_ADM 架构中的类型的对象)。我正在尝试运行查询以检索 varray 中的 KPS_ADM.NUMBER_T 对象,但我的 SQL 语法中不断返回错误。我构建的功能发布在下面

CREATE or replace function RETRIEVEPRIREF RETURN KPS_ADM.NUMBER_T AS
REF1 KPS_ADM.NUMBER_T;
BEGIN
SELECT KPS_ADM.NUMBER_T INTO REF1 from table(NOMNL) WHERE (SELECT NOMNL FROM RTRD_W.rtrd_pri WHERE (syst_id like '%0516%'));
RETURN REF1;
END RETRIEVEPRIREF;

我知道查询:SELECT NOMNL FROM RTRD_W.rtrd_pri WHERE (syst_id like '%0516%')有效并且确实返回了一个包含单个 KPS_ADM.NUMBER_T 对象的可变数组,但我似乎无法正确地获取在可变数组内部搜索以检索对象的语法。

谁能展示正确的语法来做到这一点?

4

1 回答 1

1
-- an object defined as a type in the KPS_ADM schema
CREATE TYPE number_t        AS OBJECT (object_value NUMBER);
CREATE TYPE varray_number_t AS VARRAY(10) OF number_t;

CREATE TABLE rtrd_pri
(
    column_one NUMBER
,   column_two varray_number_t
);

INSERT INTO rtrd_pri VALUES(1, (varray_number_t(number_t(11), number_t(22))));
INSERT INTO rtrd_pri VALUES(2, (varray_number_t(number_t(33), number_t(44))));

SELECT  column_one, OBJECT_VALUE AS column_two
FROM    rtrd_pri, TABLE(rtrd_pri.column_two)
;

COLUMN_ONE  COLUMN_TWO
1           11
1           22
2           33
2           44
于 2013-06-11T16:53:28.010 回答