![](/img/trans.png)
[英]SQL Retrieving varray elements of a subobject in Oracle 11g Database
[英]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.