[firebase-br] Tipos de dados

Augusto augusto em cmsolucoes.com.br
Ter Ago 9 10:50:48 -03 2005


Luiz existem algumas convesões
que vc tem que fazer na mão...

já tive esse problema e resolvi com dicas da lista.

abaixo o SQL que traz os DESCRIBE corretamente, é só alterar o nome da 
Tabela.



SELECT DISTINCT CAMPOS.RDB$FIELD_NAME AS COLUMN_NAME, CASE WHEN 
DADOSCAMPO.RDB$FIELD_PRECISION > 0 THEN 'NUMERIC' WHEN TIPOS.RDB$TYPE_NAME = 
'LONG' THEN 'INTEGER' WHEN TIPOS.RDB$TYPE_NAME = 'SHORT' THEN 'SMALLINT' 
WHEN TIPOS.RDB$TYPE_NAME = 'INT64' THEN 'NUMERIC' WHEN TIPOS.RDB$TYPE_NAME = 
'VARYING' THEN 'VARCHAR' WHEN TIPOS.RDB$TYPE_NAME = 'TEXT' THEN 'CHAR' WHEN 
TIPOS.RDB$TYPE_NAME = 'BLOB' THEN 'BLOB SUB_TYPE' ELSE TIPOS.RDB$TYPE_NAME 
END AS FIELD_TYPE, CASE WHEN DADOSCAMPO.RDB$FIELD_TYPE IN(16,8) THEN 
DADOSCAMPO.RDB$FIELD_PRECISION ELSE DADOSCAMPO.RDB$FIELD_LENGTH END AS 
DATA_LENGTH, ABS(DADOSCAMPO.RDB$FIELD_SCALE) AS DATA_SCALE, CASE 
CAMPOS.RDB$NULL_FLAG WHEN 1 THEN 'N' ELSE 'Y' END AS NULLABLE FROM 
RDB$RELATIONS TABELAS, RDB$RELATION_FIELDS CAMPOS, RDB$FIELDS DADOSCAMPO, 
RDB$TYPES TIPOS WHERE TABELAS.RDB$RELATION_NAME = 'TABELA' AND 
TIPOS.RDB$FIELD_NAME = 'RDB$FIELD_TYPE' AND TABELAS.RDB$RELATION_NAME = 
CAMPOS.RDB$RELATION_NAME AND CAMPOS.RDB$FIELD_SOURCE = 
DADOSCAMPO.RDB$FIELD_NAME AND DADOSCAMPO.RDB$FIELD_TYPE = TIPOS.RDB$TYPE 
ORDER BY CAMPOS.RDB$FIELD_POSITION





Augusto









 ----- Original Message ----- 
From: "Luiz" <luiz.mineo em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, August 09, 2005 10:39 AM
Subject: Re: [firebase-br] Tipos de dados


> Fala Augusto, obrigado pela resposta.
> Eu estou começando a trabalhar com PHP + Firebird, e fiz uma página 
> simples que lista uma tabela do meu bd (apenas as colunas e seus tipos). 
> Na primeira vez fiz a listagem  fazendo uma busca às tabelas do sistema (e 
> recorrendo a RDB$TYPES para capturar os tipos). Depois, fiz utilizando a 
> função ibase_num_fields do PHP.
> Acontece que no meu banco eu montei uma tabela da seguinte forma:
>
> CREATE TABLE TABELA(
> NOME CHAR(50) NOT NULL,
> ....
> );
>
> Na primeira página, o campo nome era listado como TEXT, enquanto na 
> segunda já era listado como CHAR.
> O estranho eh que o tipo CHAR não está na RDB$TYPES, então cheguei a 
> conclusão que esta tabela  não armazena todos os tipos (ou todos os 
> subtipos).
>
> Alguém saberia me dizer onde a função ibase_field_info busca as 
> informações que retorna?
>
> A versão do PHP que estou usando eh a 5.0.4, e o firebird eh o 1.5
>
> Agradeço a ajuda,
> Luiz.
>
> Augusto wrote:
>
>> Fala Luiz,
>>
>>  Se vc já tiver o FireBird, execute o seguinte commando;
>>
>>        SELECT RDB$TYPE, RDB$TYPE_NAME
>>
>>        FROM RDB$TYPES WHERE RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
>>
>> são todos os tipos suportados pelo FB...
>>
>> Augusto
>>
>>
>> ----- Original Message ----- From: "Luiz" <luiz.mineo em gmail.com>
>> To: <lista em firebase.com.br>
>> Sent: Monday, August 08, 2005 6:29 PM
>> Subject: [firebase-br] Tipos de dados
>>
>>
>>> Olá, gostaria de saber aonde posso encontrar uma relação com todos os 
>>> tipos de dados suportados pelo Firebird (int, char, date...). Procurei 
>>> no site oficial por alguma documentação com essa informação, mas não 
>>> consegui encontrar.
>>>
>>> Obrigado pela ajuda,
>>> Luiz.
>>>
>>> ______________________________________________
>>> 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