News & Events
Informações de tabelas Firebird
- 17 de novembro de 2010
- Posted by: Adriano Santos
- Category: Tutoriais
O Firebird de fato é um dos bancos de dados mais utilizados entre os usuários de Delphi no Brasil. Utilizo Firebird há muito tempo e, apesar de não ser especialista no SGDB e nem ser nenhum afixionado por bancos de dados, me surpreendo sempre que aprendo algo novo nele. Resolvi hoje publicar algumas dicas para àqueles que como eu, estão sempre precisando extrair informações de seus bancos. As dicas foram tiradas no site www.firebase.com.br mantido meu colega e referência em Firebird no Brasil, Carlos Cantu.
Dicas
Localizando no banco quais tabelas possuem determinado campo:
SELECT
RDB$RELATION_NAME, RDB$FIELD_NAME
FROM
RDB$RELATION_FIELDS
WHERE
RDB$RELATION_FIELDS.RDB$FIELD_NAME = ‘NOME_DO_SEU_CAMPO’
Obtendo diversas informações sobre o mesmo campo em diversas tabelas
SELECT
RDB$RELATION_FIELDS.RDB$RELATION_NAME TABLE_NAME,
RDB$RELATION_FIELDS.RDB$FIELD_NAME FIELD_NAME,
CASE
WHEN RDB$TYPES.RDB$TYPE_NAME = ‘VARYING‘ THEN ‘VARCHAR’
ELSE RDB$TYPES.RDB$TYPE_NAME
END FIELD_TYPE,
RDB$FIELDS.RDB$FIELD_LENGTH FIELD_SIZE
FROM
RDB$RELATION_FIELDS
JOIN RDB$FIELDS
ON RDB$FIELDS.RDB$FIELD_NAME = RDB$RELATION_FIELDS.RDB$FIELD_SOURCE
JOIN RDB$TYPES
ON RDB$FIELDS.RDB$FIELD_TYPE = RDB$TYPES.RDB$TYPE AND
RDB$TYPES.RDB$FIELD_NAME = ‘RDB$FIELD_TYPE’
WHERE
SUBSTRING(RDB$RELATION_FIELDS.RDB$RELATION_NAME FROM 1 FOR 4) <> ‘RDB$‘ AND
RDB$RELATION_FIELDS.RDB$FIELD_NAME = ‘NOME_DO_SEU_CAMPO’
ORDER BY
RDB$RELATION_FIELDS.RDB$RELATION_NAME
Obtendo todas as tabelas do sistema
RDB$RELATION_NAME
FROM
RDB$RELATIONS
WHERE
RDB$SYSTEM_FLAG = 0
ORDER BY
RDB$RELATION_NAME
EDITADO:
Adriano Santos
Twitter @asrsantos
Siga @tdevrocks no Twitter agora e fique por dentro de todas as atualizações do blog.
Siga também o autor @asrsantos
Adriano, gostaria de contribuir com o sql abaixo que mostra a estrutura de uma tabela:
SELECT R.RDB$FIELD_NAME AS CAMPO,T.RDB$TYPE_NAME AS TIPO,F.RDB$FIELD_LENGTH AS TAMANHO FROM RDB$RELATION_FIELDS R JOIN RDB$FIELDS F ON F.RDB$FIELD_NAME = R.RDB$FIELD_SOURCE JOIN RDB$TYPES T ON F.RDB$FIELD_TYPE = T.RDB$TYPE WHERE (R.RDB$RELATION_NAME=
‘NOME DA TABELA’) AND (T.RDB$FIELD_NAME=’RDB$FIELD_TYPE’) ORDER BY R.RDB$FIELD_NAME
Muito obrigado Edson. Publiquei no final da postagem. Abs.
Só ressaltando que a dica para mostrar a estrutura de uma tabela também teve como fonte o site firebase do Cantú. Uma forte referência de conhecimento para Firebird.
bom dia, eu estou precisando se um scryp para rodar num banco firebird, tenho uma tabela contas a receber, e uma tabela de clientes, na tabela contas a receber eu criei um campo codigo que não tinha afora preciso pegar o codigo da tabela cliente e passar para contas a receber,teria que dar um select na tabela canta a receber no campo nome e buscar o codigo na tabela clientes, relacionar as tebela pelo nomo e trazer o codigo e inserir no contas a receber… as tabela esta alimentadas