"ORA-22812: cannot refer to table storage table of nested table tables" when trying to access the system table

I have a table in my Oracle 12c database

Creating an XML Schema:

BEGIN
-- Register the schema
DBMS_XMLSCHEMA.registerSchema('http://www.example.com/fvInteger_12.xsd',
'<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="FeatureVector">
<xs:complexType>
<xs:sequence>
<xs:element name="feature" type="xs:integer" minOccurs="12" maxOccurs="12"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>',
   TRUE, TRUE, FALSE);
END;
/

Created a table:

CREATE TABLE fv_xml_12_1000 (
   id    NUMBER,
   fv  XMLTYPE)
   XMLTYPE fv STORE AS OBJECT RELATIONAL
      XMLSCHEMA "http://www.example.com/fvInteger_12.xsd"
      ELEMENT "FeatureVector";

DDL table:

SELECT 
DBMS_METADATA.GET_DDL( 'TABLE','FV_XML_12_1000') 
FROM DUAL;

The query result above:

  CREATE TABLE "HIGIIA"."FV_XML_12_1000"
   (    "ID" NUMBER,
    "FV" "SYS"."XMLTYPE"
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"
 VARRAY "FV"."XMLDATA"."feature" STORE AS TABLE "SYS_NTZqNkxcSIThTgU5pCWr3HmA=="

 (( PRIMARY KEY ("NESTED_TABLE_ID", "SYS_NC_ARRAY_INDEX$")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" ) RETURN AS LOCATOR
  XMLTYPE COLUMN "FV" XMLSCHEMA "http://www.example.com/fvInteger_12.xsd" ELEMEN
T "FeatureVector" ID 4129

I want to access this table, which is in the HIGIIA schema (it really is in higiia user_tables) .:

SYS_NTZqNkxcSIThTgU5pCWr3HmA==

However, I cannot execute the command:

desc SYS_NTZqNkxcSIThTgU5pCWr3HmA==

Because I get the error:

SP2-0565: Invalidador invalido.

Request:

select * from "SYS_NTZqNkxcSIThTgU5pCWr3HmA=="

Error Return:

ORA-22812: cannot refer to a table for storing columns of nested tables

What should I do to access this table (table SYS_NTZqNkxcSIThTgU5pCWr3HmA ==)?

Thanks in advance!

+6
2

XML- " ", Oracle , .

, ; , ; "feature" , :

select f.id, t.column_value
from fv_xml_12_1000 f
cross join table(f.fv.xmldata."feature") t;

fv XMLDATA, feature, varray.

:

insert into fv_xml_12_1000 values (1, xmltype.createxml ('<?xml version="1.0"?>
<FeatureVector xmlns:ns="http://www.example.com/fvInteger_12.xsd">
 <feature>123</feature>
</FeatureVector>'));

insert into fv_xml_12_1000 values (2, xmltype.createxml ('<?xml version="1.0"?>
<FeatureVector xmlns:ns="http://www.example.com/fvInteger_12.xsd">
 <feature>234</feature>
</FeatureVector>'));

insert into fv_xml_12_1000 values (3, xmltype.createxml ('<?xml version="1.0"?>
<FeatureVector xmlns:ns="http://www.example.com/fvInteger_12.xsd">
 <feature>456</feature>
 <feature>567</feature>
</FeatureVector>'));

:

        ID Result Sequence
---------- ---------------
         1             123
         2             234
         3             456
         3             567

XML, XML DB; XML-:

select fv from fv_xml_12_1000;

, XML.

XML, XQuery XMLTable; :

select x.*
from fv_xml_12_1000 f
cross join xmltable('/' passing f.fv columns x xmltype path '.') x;

... XPath / , , , :

select f.id, x.feature
from fv_xml_12_1000 f
cross join xmltable(
  '/FeatureVector/feature'
  passing f.fv
  columns feature number path '.')
x;

/. , , :

        ID    FEATURE
---------- ----------
         1        123
         2        234
         3        456
         3        567
+3

FV , , . FV_XML_12_1000.

SELECT *
  FROM TABLE( SELECT FV
                FROM FV_XML_12_1000);
+6

All Articles