Trabalhando o charset para gerar arquivos de um CLOB no Oracle
[ad#texto]
Vamos falar um pouco sobre charset no banco de dados Oracle, uma boa dica é primeiro descobrir quais charsets estão instalados e validados para se trabalhar no Oracle, para isso executamos a seguinte query:
SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET'
Feito isso é também uma boa identificar qual é o ID de um determinado charset (mais a frente verá como aplicar isso), para descobrir então o número ID de um charset no Oracle executamos a seguinte query:
SELECT NLS_CHARSET_ID('WE8MSWIN1252') FROM DUAL;
Note que neste exemplo localizamos o ID de um charset para Windows, conhecido como WIN-1252.
Uma forma de como utilizar e de quando vai trabalhar com isso é quando surgir a necessidade de gerar um arquivo com base em um CLOB, neste caso um dos parâmetros é o ID do charset que o arquivo será gerado:
DBMS_XSLPROCESSOR.CLOB2FILE(um_clob, path_do_arquivo, nome_do_arquivo, NLS_CHARSET_ID('AL16UTF16'));
Reparem que no último parâmetro eu utilizo a função NLS_CHARSET_ID para descobrir e passar o ID do charset informado ou ainda poderá passar um NUMBER que represente o ID do charset.
Uma dica é deixar que o arquivo seja gerado com o mesmo charset do banco de dados (para evitar que caracteres especiais não sejam impressos corretamente no arquivo caso o charset do banco de dados seja conflitante com o charset escolhido para o arquivo) apenas suprimindo o último parâmetro:
DBMS_XSLPROCESSOR.CLOB2FILE(um_clob, path_do_arquivo, nome_do_arquivo);