Como saber se uma tabela já existe num GBD ?
Olá!
Sou Desenvoldor IB/FB + DBexpress + D7.
Tenho a seguinte dúvida:
================
Tenho que montar um aplicativo para fazer upgrade, mas neste tenho q pesquisar se serta tabela já existe no GDB.
Então como faço isso?
A quem puder ajudar, desde já meus agradecimentos.
ANT.CARLOS/SP
Sou Desenvoldor IB/FB + DBexpress + D7.
Tenho a seguinte dúvida:
================
Tenho que montar um aplicativo para fazer upgrade, mas neste tenho q pesquisar se serta tabela já existe no GDB.
Então como faço isso?
A quem puder ajudar, desde já meus agradecimentos.
ANT.CARLOS/SP
Ant.carlos/sp
Curtidas 0
Respostas
Joaoshi
23/08/2006
Colega,
select rdb$relation_name as TABELA from rdb$relations
where rdb$system_flag = 0
ORDER BY 1
Espero ter ajudado.
select rdb$relation_name as TABELA from rdb$relations
where rdb$system_flag = 0
ORDER BY 1
Espero ter ajudado.
GOSTEI 0
Ant.carlos/sp
23/08/2006
Obrigado pela atenção!
Vc repondeu:
[color=red:e0b10e9db4]select rdb$relation_name as TABELA from rdb$relations
where rdb$system_flag = 0
ORDER BY 1 [/color:e0b10e9db4]
Como faço para pegar o retorno, p/ ver se a tabela existe ou não ?
T+
ANT.CARLOS/SP
Vc repondeu:
[color=red:e0b10e9db4]select rdb$relation_name as TABELA from rdb$relations
where rdb$system_flag = 0
ORDER BY 1 [/color:e0b10e9db4]
Como faço para pegar o retorno, p/ ver se a tabela existe ou não ?
T+
ANT.CARLOS/SP
GOSTEI 0
Joaoshi
23/08/2006
O ´select´ que passei retorna todas as tabelas do banco de dados, você poderia jogar o resultado no CLIENTDATASET e fazer as verificações ou
mudar o select.
Exemplo: para saber se existe a tabela COISAS
select rdb$relation_name as TABELA from rdb$relations
where rdb$system_flag = 0 and rdb$relation_name = ´COISAS´
Poder ser que tenha outras formas.
Espero ter ajudado.
mudar o select.
Exemplo: para saber se existe a tabela COISAS
select rdb$relation_name as TABELA from rdb$relations
where rdb$system_flag = 0 and rdb$relation_name = ´COISAS´
Poder ser que tenha outras formas.
Espero ter ajudado.
GOSTEI 0
Ant.carlos/sp
23/08/2006
Caro amigo!
Obrgado pela atenção.
Bom desejaria saber onde vc conseguiu estas fontes de dados sobre os ´rdb$relations ´, pois desejaria de obter na integra para + estudos.
Desde já meus agradecimentos.
T+
ANT.CARLOS/SP
Obrgado pela atenção.
Bom desejaria saber onde vc conseguiu estas fontes de dados sobre os ´rdb$relations ´, pois desejaria de obter na integra para + estudos.
Desde já meus agradecimentos.
T+
ANT.CARLOS/SP
GOSTEI 0
Jonas_giron
23/08/2006
com esta função vc retira todas as tabelas e os campos e o tipo de dados das tabelas... ferramenta muito util para fazer atualização do sistema
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$´
order by rdb$relation_fields.rdb$relation_name
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$´
order by rdb$relation_fields.rdb$relation_name
GOSTEI 0
Sremulador
23/08/2006
se vc pegar o ibconsole e setar a propriedade para system table ele te exibira todas as tabelas do sistema...
GOSTEI 0