繁体   English   中英

SQL从Oracle 11g数据库中的VARRAY检索对象

[英]SQL Retrieving an object from VARRAY in Oracle 11g Database

我在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对象的varray,但是我似乎找不到正确的语法来进行搜索在varray中检索对象。

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

-- 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM