[firebase-br] Bug grave no Firebird
Sidnei
sidnei em amcom.com.br
Qua Jul 13 08:04:43 -03 2005
Não concordo muito com vc, pois o banco de dados, tem varias
funcionalidades. A principal delas que todo mundo sabe, eh armazenar dados.
As outras, dai vai de cada banco. Mas como vi que no firebird tem uma opcao
para criar um campo do tipo NUMERIC(12,4), entao no meu entender, ele vai
"Berrar" quando inserir algum valor maior do que o especificado no tipo do
campo. Se ele nao "Berrar", para mim, nao se torna uma funcionalidade do
banco, e sim uma preocupacao, pois terei que fazer tratamentos que o banco
de dados deveria fazer e nao faz.
Outra coisa, vc comparou o Firebird com alguns bancos de dados. Eu aki, uso
o Firebird em mais ou menos 30 estacoes que descarregam numa base Online
Oracle. O que acontece:
- O Firebird aceita numeros fora do NUMERIC(12,4), e quando vai descarregar
para o Oracle, ele "Berra" lah dizendo que nao aceita.
Sidnei
----- Original Message -----
From: "Otto" <ottofuch em terra.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, July 12, 2005 5:54 PM
Subject: Re: [firebase-br] Bug grave no Firebird
> Nos arquivos xBase (.DBF) os valores numéricos são armazenados como
> strings
> de caracteres e convertidos para os valores após a leitura no arquivo de
> dados .DBF.
> No Paradox não sei, pois a Borland nunca abriu dados sobre o Paradox. Mas
> permite, além de currency, o BCD
>
> Em
> http://www.uniube.br/uniube/cursos/graduacao/tpd/Disciplinas/jr/minicurso/ParadoxSQL.html#topico2
> temos:
> "BCD (Binary Coded Decimal - # ) : Este tipo de campo é usado para
> realizar
> cálculos numéricos com uma precisão maior do que aquela efetuada com os
> demais tipos númericos. A principal utilidade deste tipo de campo consiste
> em fornecer compatibilidade com outras aplicações que usam dados deste
> tipo,
> pois no caso da utilização de tabelas Paradox num aplicativo, só serão
> permitidos números com um máximo de 15 algarismos significativos. "
>
> O BCD é muito usado no COBOL (COmmon Business Orientated Language), e pelo
> que me lembro, num byte, usa ós dois nibles do byte. Um byte, de 8 bits,
> compõe-se de dois nibles 22221111 onde 1111 é o nible à direita, e 2222 é
> o
> nible à esquerda. Com um nible pode-se representar númeos de 0 a 15. Mas
> em
> cada nible, apenas os númeos de 0 a 9 são aproveitados para representar os
> respectivos numeros decimais. Consegue-se armazenar dois dígitos decimais
> nun byte.
>
> Tanto o Delphi 6 quanto o C++ Builder 5 (foi os que eu olhei) tem classes
> de
> suporte à representação BCD. Mas como também existe o tipo currency, não
> há
> necessidade, embora o currency sempre opera com quatro casas decimais após
> a
> vírgula (ponto para os americanos).
>
> No caso do Firebird (e Access e outros mais) o negócio é entregar os
> números
> já na conformação certa ao Firebird. Quantos aos dados calculados
> internamente ...
> 100+
> Otto
>
>
>
>
>
>
>
> ----- Original Message -----
> From: "PHA (TeamFB)" <lista em pha.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Tuesday, July 12, 2005 10:54 AM
> Subject: Re: [firebase-br] Bug grave no Firebird
>
>
>> Concordo com o Sydnei, o limite deveria ser respeitado.
>>
>> Eles mudaram isso, so nao me lembro em qual versão, antigamente o Numeric
> era respeitado e o Decimal nao.
>>
>> NUMERIC datatype
>>
>> NUMERIC(x,y)
>> In the syntax above, InterBase stores exactly x digits. Of that number,
> exactly y digits are
>> to the right of the decimal point. For example,
>>
>> NUMERIC(5,2)
>> declares that a column of this type always holds numbers with exactly 5
> digits, with
>> exactly two digits to the right of the decimal point: ppp.ss.
>>
>> DECIMAL datatype
>>
>> DECIMAL(x,y)
>> In the syntax above, InterBase stores at least x digits. Of that number,
> exactly y digits are
>> to the right of the decimal point. For example,
>>
>> DECIMAL(5,2)
>> declares that a column of this type must be capable of holding at least
> five but possibly
>> more digits and exactly two digits to the right of the decimal point:
> ppp.ss.
>>
>> PHA
>> Nova Odessa / SP - Brazil
>> Membro do TeamFB (FireBase)
>>
>> -----Mensagem original-----
>> From: "Sidnei" sidnei em amcom.com.br
>> Date: Tue, 12 Jul 2005 12:12:44 -0300
>> To: "Carlos H. Cantu" listas em warmboot.com.br
>> Subject: Re: [firebase-br] Bug grave no Firebird
>>
>> > Resumindo, o NUMERIC(12,4) nao serve pra nada de controle do
> Firebird....
>> >
>> >
>> > ----- Original Message -----
>> > From: "Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
>> > To: "FireBase" <lista em firebase.com.br>
>> > Sent: Tuesday, July 12, 2005 11:09 AM
>> > Subject: Re: [firebase-br] Bug grave no Firebird
>> >
>> >
>> > > No dialeto 3, um campo numeric (12,4) é armazenado internamente como
>> > > um inteiro de 64bits, que permite valores entre:
>> > >
>> > > -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807
>> > >
>> > > No seu caso, como vc determinou 4 casas decimais, irá conseguir
>> > > armazenar valores etre:
>> > >
>> > > -922.337.203.685.477,5808 e 922.337.203.685.477,5807
>> > >
>> > > []s
>> > > Cantu (Membro do TeamFB - FireBase)
>> > > http://www.warmboot.com.br
>> > > FireBase - http://www.FireBase.com.br
>> > >
>> > > S> Estou usando o Firebird versão 1.5.2.4731, e aconteceu um
>> > > S> problema onde me assustei muito. Vou passar o problema abaixo
>> > > S> atravez de script:
>> > >
>> > > S> CREATE TABLE TESTE(VAL1 NUMERIC(12,4));
>> > > S> COMMIT;
>> > >
>> > > S> INSERT INTO TESTE
>> > > S> (VAL1)
>> > > S> VALUES
>> > > S> (1234567890123);
>> > > S> COMMIT;
>> > >
>> > > S> Notem que criei um campo com capacidade de 12 e o firebird
>> > > S> aceita eu inserir um valor com 13 digitos.
>> > >
>> > > S> Alguem pode me dizer se ja passou por isso?
>> > >
>> > > S> Sidnei
>> > > S> ______________________________________________
>> > > S> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>> > > S> Para editar sua configuração na lista, use o endereço
>> > > S> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> > > S> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>> > >
>> > >
>> > > ______________________________________________
>> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>> > > Para editar sua configuração na lista, use o endereço
>> > > http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>> >
>> >
>> > ______________________________________________
>> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>> > Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista