微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ORACLE-从VARRAY OF REF对象中选择数据

如何解决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 举报,一经查实,本站将立刻删除。