Artigo Clube Delphi Edição 47 - Top 15 do InterBase/Firebird
Artigo da Revista Clube Delphi Edição 47.
Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
Top-15 do InterBase/Firebird
Dúvidas mais freqüentes e suas soluções
Sendo o
1) Como utilizar caracteres acentuados?
Devemos fazer uso dos charsets e collates disponíveis no IB/FB. São eles que permitem ao administrador do banco de dados (DBA) indicar ao banco quais os caracteres que serão aceitos nos campos alfanuméricos, tanto globalmente (em nível de BD) ou individualmente para cada campo.
São dois os charsets indicados para utilização com o português: ISO8859_1 e WIN1252. Não se engane com este último, apesar do nome sugerir que seja um charset para Windows, ele está disponível em todas as versões do IB/FB para todos os sistemas operacionais suportados – inclusive o Linux. Cada charset possui um conjunto de collates, os quais dizem ao BD como deve comparar os caracteres ou realizar uma ordenação. Ou seja, o collate determina como as palavras “Joao” e “João”, por exemplo, serão ordenadas ou comparadas entre si.
Para o charset ISO8859_1, devemos utilizar o collate PT_PT; já para o charset WIN1252 devemos utilizar o PXW_INTL850. Sempre recomendo o uso deste último par (WIN1252/PXW_INTL850) pois o collate PT_PT tem certos efeitos indesejados na ordenação: ele desconsidera os espaços em branco, fazendo com que algumas ordenações fiquem um tanto quanto “esquisitas”.
O charset pode ser definido globalmente para todo o banco indicando-o durante a criação do BD, como no exemplo a seguir:
CREATE DATABASE 'c:\banco.fdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1252;
Ou pode ser definido em cada campo, por exemplo:
CREATE TABLE TABELA(
CAMPO1 VARCHAR(10) CHARACTER SET WIN1252 COLLATE PXW_INTL850,
CAMPO2 VARCHAR(10) CHARACTER SET ISO8859_1 COLLATE PT_PT);
2) Por que obtenho o erro "arithmetic exception, numeric overflow, or string truncation"?
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo