SnowConvert AI Oracle – Tipos XML

Descrição

Extensible Markup Language (XML) é um formato padrão desenvolvido pelo Consortium da Web (W3C) para representar dados estruturados e não estruturados na Web. Identificadores de recursos universais (URIs) identificam recursos como páginas da web em qualquer lugar na da web. A Oracle fornece tipos para tratar dados XML e URI, bem como uma classe de URIs chamada tipos DBURIRef para acessar dados armazenados no próprio banco de dados. (Referência de linguagem Oracle SQL, Tipos XML)

Pacote URIFactory

Descrição

A Oracle também fornece o pacote URIFactory, que pode criar e retornar instâncias dos vários subtipos do pacote URITypes. O pacote analisa a cadeia de caracteres URL, identifica o tipo de URL (HTTP, DBURI, e assim por diante) e cria uma instância do subtipo. (Pacote URIFactory da referência de linguagem Oracle SQL)

URIFactory contém os seguintes subprogramas:

GETURI

Oracle

SELECT SYS.URIFACTORY.GETURI('http://localhost/').GETURL() FROM dual;
Copy

Resultado

SYS.URIFACTORY.GETURI(“HTTP://LOCALHOST/”).GETURL()

http://localhost/

Snowflake

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'SYS.URIFACTORY.GETURI' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS GETURI.GETURL() FROM dual;
Copy

ESCAPEURI

Oracle

SELECT SYS.URIFACTORY.ESCAPEURI('http://www.<->') FROM dual;
Copy

Resultado

SYS.URIFACTORY.ESCAPEURI(“HTTP://WWW.<->”)

http://www.%3C-%3E

Snowflake

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'SYS.URIFACTORY.ESCAPEURI' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS ESCAPEURI
FROM dual;
Copy

UNESCAPEURI

Oracle

SELECT SYS.URIFACTORY.UNESCAPEURI('http://www.%24-%26-%3C-%3E-%3F') FROM dual;
Copy

Resultado

SYS.URIFACTORY.UNESCAPEURI(“HTTP://WWW.%24-%26-%3C-%3E-%3F”)

http://www.$-&-<->-?

Snowflake

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'SYS.URIFACTORY.UNESCAPEURI' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS UNESCAPEURI
FROM dual;
Copy

REGISTERURLHANDLER

Oracle

CREATE TABLE url_table (urlcol varchar2(80));
INSERT INTO url_table VALUES ('http://www.google.com/');

CREATE OR REPLACE TYPE SCURIType UNDER SYS.URIType (
  OVERRIDING MEMBER FUNCTION getClob RETURN CLOB,
  OVERRIDING MEMBER FUNCTION getBlob RETURN BLOB,
  OVERRIDING MEMBER FUNCTION getExternalURL RETURN VARCHAR2,
  OVERRIDING MEMBER FUNCTION getURI RETURN VARCHAR2,
  STATIC FUNCTION createURI(url IN VARCHAR2) RETURN SCURIType);
/

CALL URIFACTORY.REGISTERURLHANDLER('sc://','HR','SCURITYPE');

INSERT INTO url_table VALUES ('SC://company1/company2=22/comp');
Copy

Snowflake

CREATE OR REPLACE TABLE url_table (urlcol VARCHAR(80))
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;

INSERT INTO url_table
VALUES ('http://www.google.com/');

--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!

--CREATE OR REPLACE TYPE SCURIType UNDER SYS.URIType (
--  OVERRIDING MEMBER FUNCTION getClob RETURN CLOB,
--  OVERRIDING MEMBER FUNCTION getBlob RETURN BLOB,
--  OVERRIDING MEMBER FUNCTION getExternalURL RETURN VARCHAR2,
--  OVERRIDING MEMBER FUNCTION getURI RETURN VARCHAR2,
--  STATIC FUNCTION createURI(url IN VARCHAR2) RETURN SCURIType)
                                                              ;

CALL URIFACTORY.REGISTERURLHANDLER('sc://','HR','SCURITYPE');

INSERT INTO url_table
VALUES ('SC://company1/company2=22/comp');
Copy

UNREGISTERURLHANDLER

Oracle

CALL URIFACTORY.UNREGISTERURLHANDLER('sc://');
Copy

Snowflake

CALL URIFACTORY.UNREGISTERURLHANDLER('sc://');
Copy

Problemas conhecidos

1. Os subprogramas do pacote URIFactory não são reconhecidos

O SnowConvert AI não transforma subprogramas de pacotes internos. A maior parte da funcionalidade dos tipos URI URI atualmente não é compatível com o Snowflake.

2. EWIs Ausentes para o pacote URIFactory

O código de saída deve exibir um EWI indicando que algumas funcionalidades não são compatíveis com o Snowflake. Há um item de trabalho para corrigir esse problema.

XMLType

Descrição

Esse tipo fornecido pela Oracle pode ser usado para armazenar e consultar os dados XML no banco de dados. O XMLType tem funções de membro que podem ser usadas para acessar, extrair e consultar os dados XML usando expressões XPath. (Tipo de dados XML da referência de linguagem Oracle SQL)

O Snowflake lida com tipos de dados semiestruturados (incluindo XMLTYPE) usando o tipo de dados VARIANT. Por esse motivo, XMLTYPEs deve ser migrado para VARIANT e, em seguida, os usos das funções usadas para manipular e consultar XML devem ser migrados para as contrapartes do Snowflake. Para obter mais informações sobre como usar XML no Snowflake, consulte esta postagem no fórum do Snowflake e a documentação da função TO_XML no Snowflake.

XMLTYPE
Copy

Amostra de padrões da origem

XMLType em Create Table

Oracle
CREATE TABLE xml_table(
    xml_column XMLTYPE
);
Copy
Snowflake
CREATE OR REPLACE TABLE xml_table (
        xml_column VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XMLTYPE DATA TYPE CONVERTED TO VARIANT ***/!!!
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
    ;
Copy

Inserir dados na coluna XML

Oracle
INSERT INTO xml_table VALUES(
    XMLType(
'<?xml version="1.0"?>  
<note>  
  <to>SnowConvert AI</to>  
  <from>Oracle</from>  
  <heading>Greeting</heading>  
  <body>Hello there!</body>  
</note>')
);
Copy
Snowflake
INSERT INTO xml_table
VALUES(
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0016 - FUNCTION RELATED WITH XML NOT SUPPORTED ***/!!!
    XMLType(
'<?xml version="1.0"?>  
<note>  
  <to>SnowConvert AI</to>  
  <from>Oracle</from>  
  <heading>Greeting</heading>  
  <body>Hello there!</body>  
</note>')
);
Copy

Problemas conhecidos

1. XMLType manipulation and query functions are not recognized

As funções para manipular e consultar XML, como XMLTYPE(), não estão sendo reconhecidas nem transformadas pelo SnowConvert.

EWIs relacionados

  1. SSC-EWI-0036: Data type converted to another data type.

  2. SSC-EWI-OR0016: XML is not supported.

Tipos de dados de URI

Descrição

A Oracle fornece uma família de tipos URI —URIType, DBURIType, XDBURITypee HTTPURIType– que estão relacionados por uma hierarquia de herança. URIType é um tipo de objeto e os outros são subtipos de URIType. (Referência de linguagem Oracle SQL, Tipos de dados URI)

DBURIType

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

DBURIType pode ser usado para armazenar valores DBURIRef, que fazem referência a dados dentro do banco de dados. O armazenamento de valores DBURIRef permite que você faça referência a dados armazenados dentro ou fora do banco de dados e acesse os dados de forma consistente. (Tipos de dados URI da referência de linguagem Oracle SQL)

DBURIType

Copy

Amostra de padrões da origem

Nota

Verifique esta seção para configurar o banco de dados de amostra.

DBURIType em Create Table

Oracle
CREATE TABLE dburitype_table(
    db_uritype_column DBURITYPE,
    sys_db_uritype_column SYS.DBURITYPE
);

INSERT INTO dburitype_table (db_uritype_column) VALUES (
    dburitype.createUri('/HR/EMPLOYEES/ROW[EMPLOYEE_ID=205]/FIRST_NAME ')
);
Copy
Snowflake
CREATE OR REPLACE TABLE dburitype_table (
        db_uritype_column VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'DBURITYPE' USAGE CHANGED TO VARIANT ***/!!!,
        !!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
        sys_db_uritype_column SYS.DBURITYPE
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
    ;

    CREATE OR REPLACE VIEW PUBLIC.dburitype_table_view
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "" }}'
    AS
    SELECT
        db_uritype_column,
        sys_db_uritype_column
    FROM
        dburitype_table;

        INSERT INTO dburitype_table(db_uritype_column) VALUES (
    dburitype.createUri('/HR/EMPLOYEES/ROW[EMPLOYEE_ID=205]/FIRST_NAME ') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'dburitype.createUri' NODE ***/!!!
);
Copy

Recuperação de dados da coluna DBURIType

Oracle
SELECT dt.db_uritype_column.getclob() FROM dburitype_table dt;
Copy
Resultado

DT.DB_URITYPE_COLUMN.GETCLOB()

¶ <FIRST_NAME>Shelley</FIRST_NAME>¶

Essa consulta de resultados tem a sintaxe XML, e é assim que ela é exibida:

<?xml version="1.0"?>
 <FIRST_NAME>Shelley</FIRST_NAME>
Copy
Snowflake
SELECT dt.db_uritype_column.getclob() !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'dt.db_uritype_column.getclob' NODE ***/!!! FROM
dburitype_table dt;
Copy

Aviso

A função getclob não está sendo transformada pela ferramenta, mas é necessária para exibir os dados no Oracle; essa transformação estará disponível em versões futuras.

Problemas conhecidos

1. DBURIType Tipo de dados não reconhecido

DBURIType é analisado e convertido como tipo de dados personalizado pelo SnowConvert AI ou como tipo não suportado se usar o prefixo SYS. Há um item de trabalho para corrigir esse problema

EWIs relacionados

  1. SSC-EWI-0028: Tipo incompatível.

  2. SSC-EWI-0062: Custom type usage changed to variant

  3. SSC-EWI-0073: Pending functional equivalence review

HTTPURIType

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Você pode usar HTTPURIType para armazenar URLs em páginas da Web externas ou em arquivos. O Oracle acessa esses arquivos usando HTTP (Hypertext Transfer Protocol). (Tipos de dados URI da referência de linguagem Oracle SQL)

HTTPURITYPE

Copy

Amostra de padrões da origem

HTTPURIType em Create Table

Oracle
CREATE TABLE httpuritype_table(
    http_uritype_column HTTPURITYPE,
    sys_http_uritype_column SYS.HTTPURITYPE
);

INSERT INTO httpuritype_table (http_uritype_column) VALUES(
    HTTPURITYPE.createuri('http://localhost/')
);
INSERT INTO httpuritype_table (http_uritype_column) VALUES(
    HTTPURITYPE.createuri('www.google.com')
);
Copy
Snowflake
CREATE OR REPLACE TABLE httpuritype_table (
	    http_uritype_column VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'HTTPURITYPE' USAGE CHANGED TO VARIANT ***/!!!,
	    !!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
	    sys_http_uritype_column SYS.HTTPURITYPE
	)
	COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "" }}'
	;

	CREATE OR REPLACE VIEW PUBLIC.httpuritype_table_view
	COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "" }}'
	AS
	SELECT
	    http_uritype_column,
	    sys_http_uritype_column
	FROM
	    httpuritype_table;

	    INSERT INTO httpuritype_table(http_uritype_column) VALUES(
    HTTPURITYPE.createuri('http://localhost/') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'HTTPURITYPE.createuri' NODE ***/!!!
);

	    INSERT INTO httpuritype_table(http_uritype_column) VALUES(
    HTTPURITYPE.createuri('www.google.com') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'HTTPURITYPE.createuri' NODE ***/!!!
);
Copy

Recuperação de dados da coluna HTTPURIType

Oracle
SELECT 
	ut.http_uritype_column.getUrl(),
	ut.http_uritype_column.getExternalUrl()
FROM 
	httpuritype_table ut;
Copy
Resultado

UT.HTTP_URITYPE_COLUMN.GETURL()

UT.HTTP_URITYPE_COLUMN.GETEXTERNALURL()

http://localhost/

http://localhost/

http://www.google.com

http://www.google.com

Snowflake
SELECT
	ut.http_uritype_column.getUrl() !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ut.http_uritype_column.getUrl' NODE ***/!!!,
	ut.http_uritype_column.getExternalUrl() !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ut.http_uritype_column.getExternalUrl' NODE ***/!!!
FROM
	httpuritype_table ut;
Copy

Aviso

As funções getUrl e getExternalUrl não estão sendo transformadas pela ferramenta, mas são necessárias para exibir os dados no Oracle; essa transformação estará disponível em versões futuras.

Problemas conhecidos

1. HTTPURIType Tipo de dados não reconhecido

HTTPURIType é analisado e convertido como tipo de dados personalizado pelo SnowConvert AI ou como tipo não suportado se usar o prefixo SYS. Há um item de trabalho para corrigir esse problema

EWIs relacionados

  1. SSC-EWI-0028: Tipo incompatível.

  2. SSC-EWI-0062: Custom type usage changed to variant.

  3. SSC-EWI-0073: Pending functional equivalence review.

XDBURIType

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Você pode usar XDBURIType para expor documentos na hierarquia do banco de dados XML como URIs que podem ser incorporados em qualquer coluna URIType de uma tabela. XDBURIType consiste em um URL, que compreende o nome hierárquico do documento XML ao qual se refere e um fragmento opcional que representa a sintaxe XPath. (Tipos de dados URI da referência de linguagem Oracle SQL)

XDBURITYPE

Copy

Amostra de padrões da origem

XDBURIType em Create Table

Oracle
CREATE TABLE xdburitype_table(
    xdb_uritype_column XDBURITYPE,
    sys_xdb_uritype_column SYS.XDBURITYPE
);

INSERT INTO xdburitype_table (xdb_uritype_column) VALUES(
    xdburitype('/home/OE/employees/emp_selby.xml')
);
Copy
Snowflake
CREATE OR REPLACE TABLE xdburitype_table (
        xdb_uritype_column VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'XDBURITYPE' USAGE CHANGED TO VARIANT ***/!!!,
        !!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
        sys_xdb_uritype_column SYS.XDBURITYPE
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
    ;

    CREATE OR REPLACE VIEW PUBLIC.xdburitype_table_view
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "" }}'
    AS
    SELECT
        xdb_uritype_column,
        sys_xdb_uritype_column
    FROM
        xdburitype_table;

        INSERT INTO xdburitype_table(xdb_uritype_column) VALUES(
    xdburitype('/home/OE/employees/emp_selby.xml') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'xdburitype' NODE ***/!!!
);
Copy

Recuperação de dados da coluna XDBURIType

Oracle
SELECT ut.xdb_uritype_column.getclob() FROM xdburitype_table ut;
Copy
Resultado

UT.XDB_URITYPE_COLUMN.GETCLOB()

<emp_name>selby</emp_name>

Essa consulta de resultados tem a sintaxe XML, e é assim que ela é exibida:

<emp_name>selby</emp_name>
Copy
Snowflake
SELECT ut.xdb_uritype_column.getclob() !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ut.xdb_uritype_column.getclob' NODE ***/!!! FROM
xdburitype_table ut;
Copy

Aviso

A função getclob não está sendo transformada pela ferramenta, mas é necessária para exibir os dados no Oracle; essa transformação estará disponível em versões futuras.

Problemas conhecidos

1. XDBURIType Tipo de dados não reconhecido

XDBURIType é analisado e convertido como tipo de dados personalizado pelo SnowConvert AI ou como tipo não suportado se usar o prefixo SYS. Há um item de trabalho para corrigir esse problema

EWIs relacionados

  1. SSC-EWI-0028: Tipo incompatível.

  2. SSC-EWI-0062: Custom type usage changed to variant

  3. SSC-EWI-0073: Pending functional equivalence review