[firebase-br] VERIFICAR O TIPO DE DADOS DE UMA COLUNA NO FIREBIRD

Marcio Gleyson Silva sistemsdeveloper em gmail.com
Seg Set 26 12:44:50 -03 2011


CREATE PROCEDURE SP_COLUM_TYPE (LNTABELA VARCHAR(50))
returns (CAMPO  VARCHAR(50),
     TIPO   VARCHAR(50),
     STATUS INTEGER)
AS

begin
  FOR
    SELECT
        DISTINCT
        CAMPOS.RDB$FIELD_NAME AS CAMPO,
        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 'STRING'
          WHEN TIPOS.RDB$TYPE_NAME = 'TEXT' THEN 'CHAR'
          WHEN TIPOS.RDB$TYPE_NAME = 'DOUBLE' THEN 'FLOAT'
          WHEN TIPOS.RDB$TYPE_NAME = 'FLOAT' THEN 'FLOAT'
          WHEN TIPOS.RDB$TYPE_NAME = 'TIMESTAMP' THEN 'DATE'
          WHEN TIPOS.RDB$TYPE_NAME = 'DATE' THEN 'DATE'
          WHEN TIPOS.RDB$TYPE_NAME = 'BLOB' THEN 'BLOB'
        END AS TIPO,

        CASE
          WHEN
            DADOSCAMPO.RDB$FIELD_PRECISION > 0 THEN 2
          WHEN TIPOS.RDB$TYPE_NAME = 'LONG' THEN 0
          WHEN TIPOS.RDB$TYPE_NAME = 'SHORT' THEN 0
          WHEN TIPOS.RDB$TYPE_NAME = 'INT64' THEN 0
          WHEN TIPOS.RDB$TYPE_NAME = 'VARYING' THEN 1
          WHEN TIPOS.RDB$TYPE_NAME = 'TEXT' THEN 1
          WHEN TIPOS.RDB$TYPE_NAME = 'DOUBLE' THEN 2
          WHEN TIPOS.RDB$TYPE_NAME = 'FLOAT' THEN 2
          WHEN TIPOS.RDB$TYPE_NAME = 'DATE' THEN 3
          WHEN TIPOS.RDB$TYPE_NAME = 'TIMESTAMP' THEN 3
          WHEN TIPOS.RDB$TYPE_NAME = 'BLOB' THEN 4
        END AS STATUS

    FROM
       RDB$RELATIONS TABELAS, RDB$RELATION_FIELDS CAMPOS, RDB$FIELDS
DADOSCAMPO,
       RDB$TYPES TIPOS WHERE TABELAS.RDB$RELATION_NAME = :lnTabela 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

/* SELECT * FROM RDB$TYPES */

  INTO
    :Campo, :Tipo, :Status
  DO
    BEGIN
      SUSPEND;
    END
end


Em 26 de setembro de 2011 11:49, Diego Maccari <diegomaccari em ig.com.br>escreveu:

> Bom dia Pessoal
>
> Gostaria de saber se é possível verificar que tipo de dados é uma
> determinada coluna no firebird,
> gostaria de fazer isso no próprio DB alguém saberia me dizer se existe
> alguma forma de fazer isso no FB.
>
> Att
>
> Diego M.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista