Função conversão LONG para CLOB e posteriormente CLOB para VARCHAR

Citação de Marcos Soares em 30/01/2025, 09:45Olá, pessoal. Compartilhar com vocês uma função que utilizei para resolver um problema onde precisava fazer um ETL de um campo do tipo LONG. Para isso, tive que utilizar uma função para converter o campo LONG para CLOB, e posteriormente converter o CLOB para VARCHAR. Deixo abaixo sintaxe de como deve ser preenchido a consulta.
Primeiramente, crie a função no seu banco de dados. O arquivo está disponível no final da página.
Depois disso, iremos informar o schema, nome da tabela, e nome do campo, conforme exemplo abaixo, para converter o LONG para CLOB. A conversão vai funcionar como uma subquery, portanto fica a critério da complexidade da consulta inserir outros campos da tabela.
Não precisa alterar o campo ROWID...
from
(SELECT
DBAMV.FN_LONG_TO_CLOB('SCHEMA.NOME_TABELA', 'NOME_COLUNA', ROWID) conversao
FROM SCHEMA.NOME_TABELA
) cFeito isso, agora iremos converter o CLOB para VARCHAR. Iremos chamar a coluna e utilizando a função nativa do Oracle DBMS_LOB.SUBSTR, como mostra no exemplo abaixo.
select DBMS_LOB.SUBSTR(c.conversao, 4000, 1) conversao
from (..E assim, fica a conversão completa.
select DBMS_LOB.SUBSTR(c.conversao, 4000, 1) conversao
from
(SELECT
DBAMV.FN_LONG_TO_CLOB('SCHEMA.NOME_TABELA', 'NOME_COLUNA', ROWID) conversao
FROM SCHEMA.NOME_TABELA
) c
Abaixo deixo exemplos reais onde foi utilizado a função:
Exemplo 1
Exemplo 2
Deixo em anexo a função e o script para uso nas consultas.
Espero que lhe seja útil.
Olá, pessoal. Compartilhar com vocês uma função que utilizei para resolver um problema onde precisava fazer um ETL de um campo do tipo LONG. Para isso, tive que utilizar uma função para converter o campo LONG para CLOB, e posteriormente converter o CLOB para VARCHAR. Deixo abaixo sintaxe de como deve ser preenchido a consulta.
Primeiramente, crie a função no seu banco de dados. O arquivo está disponível no final da página.
Depois disso, iremos informar o schema, nome da tabela, e nome do campo, conforme exemplo abaixo, para converter o LONG para CLOB. A conversão vai funcionar como uma subquery, portanto fica a critério da complexidade da consulta inserir outros campos da tabela.
Não precisa alterar o campo ROWID.
..
from
(SELECT
DBAMV.FN_LONG_TO_CLOB('SCHEMA.NOME_TABELA', 'NOME_COLUNA', ROWID) conversao
FROM SCHEMA.NOME_TABELA
) c
Feito isso, agora iremos converter o CLOB para VARCHAR. Iremos chamar a coluna e utilizando a função nativa do Oracle DBMS_LOB.SUBSTR, como mostra no exemplo abaixo.
select DBMS_LOB.SUBSTR(c.conversao, 4000, 1) conversao
from (..
E assim, fica a conversão completa.
select DBMS_LOB.SUBSTR(c.conversao, 4000, 1) conversao
from
(SELECT
DBAMV.FN_LONG_TO_CLOB('SCHEMA.NOME_TABELA', 'NOME_COLUNA', ROWID) conversao
FROM SCHEMA.NOME_TABELA
) c
Abaixo deixo exemplos reais onde foi utilizado a função:
Exemplo 1
Exemplo 2
Deixo em anexo a função e o script para uso nas consultas.
Espero que lhe seja útil.
Arquivos enviados:- Você precisa fazer o login para ter acesso aos uploads.