Re: [firebase-br] Erro na migração para do 2.5 para o 5

"Carlos H. Cantu via lista" <[email protected]> Tue, 6 Aug 2024 09:05:02 -0300
Newsgroups gmane.comp.db.firebase.portuguese
Organization WarmBoot Informatica - FireBase
Message-ID <[email protected]>
Fiz um teste aqui e só consegui reproduzir o problema mencionado por você quando 
eu conecto na base sem definir um charset para a conexão, por exemplo, no isql, 
conectando sem falar que charset quero usar:

isql employee
SQL> set sqlda_display on;
SQL> select lpad('123',5,'0') from rdb$database;

INPUT message field count: 0

OUTPUT message field count: 1
01: sqltype: 448 VARYING scale: 0 subtype: 0 len: 5 charset: 0 NONE <----
  :  name: LPAD  alias: LPAD
  : table:   owner:

LPAD
======
00123


Conectando com o charset ISO8859_1:


isql -ch ISO8859_1 employee
Database: employee, User: SYSDBA
SQL> set sqlda_display on;
SQL> select lpad('123',5,'0') from rdb$database;

INPUT message field count: 0

OUTPUT message field count: 1
01: sqltype: 448 VARYING scale: 0 subtype: 0 len: 5 charset: 21 ISO8859_1 <----
  :  name: LPAD  alias: LPAD
  : table:   owner:

LPAD
======
00123


Ou seja, aparentemente você não está especificando o charset da sua conexão, 
fazendo com que a função retorne usando o charset NONE.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 5 - www.firebase.com.br/guiafb5.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

ÉMdNvl> Bom dia.
ÉMdNvl> Estamos realizando a migração de um sistema do  2.5 para o 5.
ÉMdNvl> Fizemos os procedimentos orientados pelo mestre Cantu, e antes de migrar,
ÉMdNvl> já fizemos diversas correções que poderiam gerar problemas no 5.
ÉMdNvl> Contudo fui pego num ponto que não estou sabendo como buscar a solução no
ÉMdNvl> google por não saber exatamente o que procurar.

ÉMdNvl> A situação é que no 2.5 usamos muito (muito mesmo) o seguinte comando.
ÉMdNvl> LPAD(ID_MES,2,'0') para completar o campo com '0' à esquerda, e ele
ÉMdNvl> funciona perfeitamente. O campo ID_MES é um BIG_INT
ÉMdNvl> No fire 5, ele continua funcionando, contudo, gera um problema.

ÉMdNvl> 2.5 LPAD(ID_MES,2,'0') = '01' charset *ISO8859_1 *collation PT_BR
ÉMdNvl> 5   LPAD(ID_MES,2,'0') = '01' charset *None *collation PT_BR
ÉMdNvl> O problema, nosso sistema trabalha todo em Charset ISO8859_1 Collation
ÉMdNvl> PT_BR, e temos diversos lugares, que a comparação é busca é por esse campo.
ÉMdNvl> Só que aí sobe o erro:

ÉMdNvl> Erro de collation PT_br For character set none

ÉMdNvl> Por estar comparando entre charset diferentes.
ÉMdNvl> Já iniciei o *ajuste* fazendo o processo LPAD(CAST(ID_MES AS
ÉMdNvl> VARCHAR(2)),2,'0'), isso retorna Charset ISO8859_1.
ÉMdNvl> Contudo, temos algumas centenas de consultas, relatórios, e outras coisas
ÉMdNvl> mais, que essa situação está impactando. Atrasando nossa migração.
ÉMdNvl> Tem algum lugar que possa de configurar para que ele entenda isso como
ÉMdNvl> antes?





ÉMdNvl> *Éder Monteiro do Nascimento*

ÉMdNvl> Analista de Sistemas Full Stack

ÉMdNvl> Fator Sistemas & Consultoria

ÉMdNvl> e-mail: *[email protected] <[email protected]>*

ÉMdNvl> http://fatorsistemas.com.br
ÉMdNvl> ______________________________________________
ÉMdNvl> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
ÉMdNvl> Para saber como gerenciar/excluir seu cadastro na lista, use:
ÉMdNvl> http://www.firebase.com.br/fb/artigo.php?id=1107
ÉMdNvl> Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html