[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