tipo do campo na tabela
Olá, Boa Tarde. Gostaria de saber se existe um select (firebird 2.1) que me retorna o tipo do campo(ex: integer,date,varchar,etc..) de uma tabela específica .
algo parecido com isso :
SELECT RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME AS TABELA,
RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME AS CHAVE,
RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME AS INDICE_DA_CHAVE,
RDB$INDEX_SEGMENTS.RDB$FIELD_NAME AS CAMPO,
RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION AS POSICAO
FROM RDB$RELATION_CONSTRAINTS,
RDB$INDICES,
RDB$INDEX_SEGMENTS
WHERE RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
AND RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDICES.RDB$INDEX_NAME
AND RDB$INDEX_SEGMENTS.RDB$INDEX_NAME = RDB$INDICES.RDB$INDEX_NAME
ORDER BY RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME,
RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION
Obrigado.
algo parecido com isso :
SELECT RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME AS TABELA,
RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME AS CHAVE,
RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME AS INDICE_DA_CHAVE,
RDB$INDEX_SEGMENTS.RDB$FIELD_NAME AS CAMPO,
RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION AS POSICAO
FROM RDB$RELATION_CONSTRAINTS,
RDB$INDICES,
RDB$INDEX_SEGMENTS
WHERE RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
AND RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDICES.RDB$INDEX_NAME
AND RDB$INDEX_SEGMENTS.RDB$INDEX_NAME = RDB$INDICES.RDB$INDEX_NAME
ORDER BY RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME,
RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION
Obrigado.
Mais Dominio
Curtidas 0
Respostas
Wesley Yamazack
16/11/2010
Olá Valter.
Segue sua dúvida respondida :
SELECT r.RDB$FIELD_NAME AS field_name,
r.RDB$DESCRIPTION AS field_description,
r.RDB$DEFAULT_VALUE AS field_default_value,
r.RDB$NULL_FLAG AS field_not_null_constraint,
f.RDB$FIELD_LENGTH AS field_length,
f.RDB$FIELD_PRECISION AS field_precision,
f.RDB$FIELD_SCALE AS field_scale,
CASE f.RDB$FIELD_TYPE
WHEN 261 THEN 'BLOB'
WHEN 14 THEN 'CHAR'
WHEN 40 THEN 'CSTRING'
WHEN 11 THEN 'D_FLOAT'
WHEN 27 THEN 'DOUBLE'
WHEN 10 THEN 'FLOAT'
WHEN 16 THEN 'INT64'
WHEN 8 THEN 'INTEGER'
WHEN 9 THEN 'QUAD'
WHEN 7 THEN 'SMALLINT'
WHEN 12 THEN 'DATE'
WHEN 13 THEN 'TIME'
WHEN 35 THEN 'TIMESTAMP'
WHEN 37 THEN 'VARCHAR'
ELSE 'UNKNOWN'
END AS field_type,
f.RDB$FIELD_SUB_TYPE AS field_subtype,
coll.RDB$COLLATION_NAME AS field_collation,
cset.RDB$CHARACTER_SET_NAME AS field_charset
FROM RDB$RELATION_FIELDS r
LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
WHERE r.RDB$RELATION_NAME='CLIENTE' -- table name
ORDER BY r.RDB$FIELD_POSITION
Veja se isso irá resolver teu problema, fiz aqui no FB 2.1, e me listou tudo certinho.
Um abraço
Wesley Y
Segue sua dúvida respondida :
SELECT r.RDB$FIELD_NAME AS field_name,
r.RDB$DESCRIPTION AS field_description,
r.RDB$DEFAULT_VALUE AS field_default_value,
r.RDB$NULL_FLAG AS field_not_null_constraint,
f.RDB$FIELD_LENGTH AS field_length,
f.RDB$FIELD_PRECISION AS field_precision,
f.RDB$FIELD_SCALE AS field_scale,
CASE f.RDB$FIELD_TYPE
WHEN 261 THEN 'BLOB'
WHEN 14 THEN 'CHAR'
WHEN 40 THEN 'CSTRING'
WHEN 11 THEN 'D_FLOAT'
WHEN 27 THEN 'DOUBLE'
WHEN 10 THEN 'FLOAT'
WHEN 16 THEN 'INT64'
WHEN 8 THEN 'INTEGER'
WHEN 9 THEN 'QUAD'
WHEN 7 THEN 'SMALLINT'
WHEN 12 THEN 'DATE'
WHEN 13 THEN 'TIME'
WHEN 35 THEN 'TIMESTAMP'
WHEN 37 THEN 'VARCHAR'
ELSE 'UNKNOWN'
END AS field_type,
f.RDB$FIELD_SUB_TYPE AS field_subtype,
coll.RDB$COLLATION_NAME AS field_collation,
cset.RDB$CHARACTER_SET_NAME AS field_charset
FROM RDB$RELATION_FIELDS r
LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
WHERE r.RDB$RELATION_NAME='CLIENTE' -- table name
ORDER BY r.RDB$FIELD_POSITION
Veja se isso irá resolver teu problema, fiz aqui no FB 2.1, e me listou tudo certinho.
Um abraço
Wesley Y
GOSTEI 0
Mais Dominio
16/11/2010
Muito Obrigado, era isso mesmo...
GOSTEI 0
Wesley Yamazack
16/11/2010
Olá Valter,
Estamos a disposição.
Um abraço
Wesley Y
Estamos a disposição.
Um abraço
Wesley Y
GOSTEI 0