如何解决ORACLE-从VARRAY OF REF对象中选择数据
我正在使用ORACLE,并希望使用REF访问数组的对象。这是我的结构:
select e.tablon,t.nombre
from escaparate e,table( e.lista_productos ) t;
我尝试访问escaparate时遇到的问题是无法从REFS的VARRAY访问数据。试过这个:
onDidChangeActiveTextEditor
onDidChangeTextEditorSelection
解决方法
表集合表达式返回带有COLUMN_VALUE
标识符的数据,您可以使用它来获取REF
值:
SELECT e.tablon,t.COLUMN_VALUE.nombre AS nombre
FROM escaparate e
LEFT OUTER JOIN table( e.lista_productos ) t
ON ( 1 = 1 );
(您也可以LEFT OUTER JOIN
,以便在VARRAY
为空或NULL
的情况下获得行。)
因此,对于数据:
insert into escaparate ( tablon,lista_productos )
VALUES (
1,lista(
( SELECT REF(a) FROM almacen a WHERE CODIGO_BARRAS=1 ),( SELECT REF(a) FROM almacen a WHERE CODIGO_BARRAS=2 )
)
);
insert into escaparate ( tablon,lista_productos )
VALUES ( 2,lista() );
insert into escaparate ( tablon,lista_productos )
VALUES ( 3,NULL );
这将输出:
TABLON | NOMBRE -----: | :------------- 1 | Destornillador 1 | Llave inglesa 2 | null 3 | null
或者,如果需要数组中的位置,则可以使用LATERAL
连接:
SELECT e.tablon,t.*
FROM escaparate e
LEFT OUTER JOIN LATERAL (
SELECT ROWNUM AS rn,t.COLUMN_VALUE.nombre AS nombre
FROM TABLE( e.lista_productos ) t
) t
ON ( 1 = 1 );
哪个输出:
TABLON | RN | NOMBRE -----: | ---: | :------------- 1 | 1 | Destornillador 1 | 2 | Llave inglesa 2 | null | null 3 | null | null
db 提琴here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。