Selecionar Colunas no Metadados

25/07/2008

0

Bom pessoal, o meu problema é um pouco dificil de se resolver, mas com este select abaixo eu consigo obter o nome do campo, tipo e tamanho mas gostaria que alem desses eu tivesse se ele é nulo ou não, abraços.


select rdb$relation_fields.rdb$relation_name,
rdb$relation_fields.rdb$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
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_NAME=:id_tabela)
order by rdb$relation_fields.rdb$relation_name


Onhide86

Onhide86

Responder

Posts

25/07/2008

Thomaz_prg

é o campo RDB$NULL_FLAG da tabela RDB$RELATION_FIELDS.


Responder

25/07/2008

Onhide86

E como eu acrescento isso no SQL que eu citei no post anterior?
Valeu, abraço.


Responder

25/07/2008

Thomaz_prg

select rdb$relation_fields.rdb$relation_name,
rdb$relation_fields.rdb$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,
[b:9aee759128]coalesce( rdb$relation_fields.rdb$null_flag, 0) AS NAO_NULAVEL[/b:9aee759128]
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_NAME=:id_tabela)
order by rdb$relation_fields.rdb$relation_name


Se o campo Nao_Nulavel for 1, é pq o campo é ´not null´


Responder

25/07/2008

Onhide86

funcionou perfeitamente, mas desculpa te encomodar novamente, tem como tipo em vez de aparecer 1 aparecer NOT NULL, valeu ai pela ajuda, uma abraço


Responder

25/07/2008

Thomaz_prg

troque a linha
coalesce( rdb$relation_fields.rdb$null_flag, 0) AS NAO_NULAVEL


Por

case when coalesce( rdb$relation_fields.rdb$null_flag, 0) = 1 THEN ´NOT ´ ELSE ´´ END||´NULL´ AS NAO_NULAVEL


Responder

26/07/2008

Onhide86

Valeu Tomaz, me ajudasse bastante eim, muito obrigado, um abraço.


Responder

27/07/2008

Onhide86

Tomaz, outra coisa, tem como incluir a posição da coluna?
Valeu.


Responder

27/07/2008

Thomaz_prg

campo RDB$FIELD_POSITION da tabela RDB$RELATION_FIELDS


Responder

27/07/2008

Onhide86

Mas como eu incluo naquele select?


Responder

27/07/2008

Thomaz_prg

Antes do ´from´ inclua o campo:

rdb$relation_fields.rdb$field_position as posicao_campo


Responder

27/07/2008

Onhide86

Não deu thomaz


Responder

27/07/2008

Thomaz_prg

select rdb$relation_fields.rdb$relation_name,
rdb$relation_fields.rdb$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,
case when coalesce( rdb$relation_fields.rdb$null_flag, 0) = 1 THEN ´NOT ´ ELSE ´´ END||´NULL´ AS NAO_NULAVEL,
[b:fd2dcb0f3b]rdb$relation_fields.rdb$field_position as posicao_campo[/b:fd2dcb0f3b]
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_NAME=:id_tabela)
order by rdb$relation_fields.rdb$relation_name


Seu select ficou assim?


Responder

27/07/2008

Onhide86

Deu certo, valeu Thomaz, abraço.


Responder

02/08/2008

Onhide86

Thomaz, preciso de uma ajuda sua:

tenho o seguinte select:
SELECT RDB$INDEX_NAME ChaveEstrangeira, RDB$FOREIGN_KEY
Campo, RDB$RELATION_NAME Tabela FROM RDB$INDICES
WHERE RDB$UNIQUE_FLAG IS NULL
AND RDB$FOREIGN_KEY IS NOT NULL

Ele me retorna as chaves estrangeiras, mas esta faltando um campo o campo que recebe essa chave estrangeira, vc consegue incluir este campo que esta fantando ai nesse select para mim?, valeu ai se puder me ajudar, desde já agradeço, abraço.


Responder

29/08/2008

álison Bissoli

o que eu quero é exatamente isso, só que com a descrição do campo...


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar