问题描述
我正在使用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