[firebase-br] Tabelas de sistemas - Tipo dos campos..

Marcelo Marchionny marcelomarchionny em gmail.com
Qui Maio 10 10:15:22 -03 2007


TENTA ASSIM:

SELECT 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,
      UDF_ABS(DADOSCAMPO.RDB$FIELD_SCALE) AS DATA_SCALE,
      CASE
        CAMPOS.RDB$NULL_FLAG WHEN 1 THEN 'N' ELSE 'S' END AS NULLABLE
    FROM
      RDB$RELATIONS TABELAS,
      RDB$RELATION_FIELDS CAMPOS,
      RDB$FIELDS DADOSCAMPO,
      RDB$TYPES TIPOS
    WHERE
      TABELAS.RDB$RELATION_NAME = UPPER('NOME_DA_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

Espero ter ajudado.

Marcelo Marchionny

POA - RS





Em 10/05/07, Marcio Roberto Chiaveli <marcio.chiaveli em gmail.com> escreveu:
>
> Leandro esta select não deu certo, estou usando o FB 2.0 e esta dando
> diferença na estrutura ds tabelas.
>
> Em 09/05/07, Leandro Pineda <lbpineda em gmail.com> escreveu:
> >
> > Acho que vai resolver seu problema...
> >
> > QueryAux.Close;
> > QueryAux.sql.Clear;
> > QueryAux.sql.Add('select f.rdb$field_name Field_Name,
> > t.rdb$type_nameField_Type,
> > f.rdb$field_length Field_Size, f.rdb$null_flag Field_NotNull from
> > RDB$FIELDS
> > f');
> > QueryAux.sql.Add('join rdb$types t on f.rdb$field_type = t.rdb$type and
> > t.RDB$FIELD_NAME = ' + QuotedStr('RDB$FIELD_TYPE') );
> > QueryAux.sql.Add('where not f.RDB$FIELD_name Starting ' +
> QuotedStr('RDB')
> > );
> > QueryAux.sql.Add('Order By 1');
> > QueryAux.Open;
> > mdDomains.EmptyTable;
> > while not QueryAux.eof do
> > begin
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) = 'VARYING'
> then
> > Tipo := 'VarChar'   else
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) =
> 'TEXT'      then
> > Tipo := 'Char'      else
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) =
> 'LONG'      then
> > Tipo := 'SmallInt'  else
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) = 'SHORT'
> then
> > Tipo := 'Integer'   else
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) = 'INT64'
> then
> > Tipo := 'Numeric'   else
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) =
> 'DATE'      then
> > Tipo := 'Date'      else
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) =
> 'TIME'      then
> > Tipo := 'Time'      else
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) = 'TIMESTAMP'
> then
> > Tipo := 'TimesTamp' else
> >    if Trim(QueryAux.FieldByName('Field_Type').AsString) =
> 'BLOB'      then
> > Tipo := 'Memo'      else
> >      Tipo := QueryAux.FieldByName('Field_Type').AsString;
> >
> > Att,
> > Leandro.
> >
> > Em 09/05/07, Marcio Roberto Chiaveli <marcio.chiaveli em gmail.com>
> escreveu:
> > >
> > > Ola pessoal,
> > >
> > > Estou precisando listar num select todos os campos de uma determinada
> > > tabela
> > > e seus respctivos tipos.
> > > Os campos eu consegui extrair, mas os tipos não estou conseguindo,
> > alguem
> > > sabe como posso fazer isso?
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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.locador.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.locador.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