Testar se tabela existe dentro do FB
Preciso fazer um IF dentro de um banco FB para saber se determinada tabela existe ou não, tipo:
if Tabela Exist then
Drop Table.....
Como faço? Como é a sintaxe?
Atenção!!! Não é via Delphi, eu preciso criar uns Scripts e gosto de começar com drop e se a tabela não existir(Primeira vez) dá erro.
if Tabela Exist then
Drop Table.....
Como faço? Como é a sintaxe?
Atenção!!! Não é via Delphi, eu preciso criar uns Scripts e gosto de começar com drop e se a tabela não existir(Primeira vez) dá erro.
Paulo
Curtidas 0
Respostas
Joaoshi
25/07/2008
Colega, vê se ajuda:
[b:95b0b5980b]select rdb$relation_name from rdb$relations[/b:95b0b5980b] where rdb$relation_name = ´NomeSuaTabela´;
[b:95b0b5980b]select rdb$relation_name from rdb$relations[/b:95b0b5980b] where rdb$relation_name = ´NomeSuaTabela´;
GOSTEI 0
Paulo
25/07/2008
JOAO, EU DOU UM IF EXISTS(SELECT.....) = 0 THEN DROP...? OU COMO FAÇO?
GOSTEI 0
Joaoshi
25/07/2008
Paulo, pelo que entendi seria pelo IF EXISTS.
GOSTEI 0
Paulo
25/07/2008
Não funcionou. Da erro no if:
IF EXISTS(SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WRDB$RELATION_NAME = ´VENDA_ITENS´ THEN
DROP TABLE VENDA_ITENS;
GOSTEI 0
Joaoshi
25/07/2008
Tente com este código:
IF EXISTS(SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = ´VENDA_ITENS´) THEN DROP TABLE VENDA_ITENS;
GOSTEI 0
Paulo
25/07/2008
É o mesmo código que o meu. Continua dando erro.
GOSTEI 0
Joaoshi
25/07/2008
No seu código não estava escrito corretamente o WHERE e faltava fechar o parentesis após ´VENDAS_ITENS´.
Espero ter ajudado.
Espero ter ajudado.
GOSTEI 0
Martins
25/07/2008
Não testei as dicas do senhores, mas vejam se a dica do sr. Vampas ajuda vcs.
Por esse código é possível ter uma idéia, mas assim q o tempo me permitir irei olhar os códigos postados pelos senhores.
Boa sorte e bons códigos.
Procedure TForm1.BitBtn1Click(Sender: TObject);
var L:TStringList;
begin
{A classe TStringList é utilizada para armazenar e manipular
uma lista de strings. Através do método Add da classe é possível
inserir uma nova string a lista}
//criando Stringlist na memória
L := TStringList.Create;
//pega o nome da tabela
SQLConnection1.GetTableNames(L);
//pega a posição do tbteste(começa no 0)
if L.IndexOf(´tbteste´) >= 0 then
begin
Showmessage(´Esta tabela já existe no BD!´);
Abort
end
else
begin
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(´create table tbteste(´);
SQLQuery1.Sql.Add(´cod_teste integer not null primary key, ´);
SQLQuery1.Sql.Add(´nome_teste varchar(40))´);
SQLQuery1.ExecSQL;
L.Free;
ShowMessage(´Tabela Criada com sucesso!´);
end;
end;
Por esse código é possível ter uma idéia, mas assim q o tempo me permitir irei olhar os códigos postados pelos senhores.
Boa sorte e bons códigos.
GOSTEI 0
Martins
25/07/2008
Qual o erro q dá nesse código? Vc está usando IBExpert?
IF EXISTS(SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE (RDB$RELATION_NAME = ´VENDA_ITENS´) and (RDB$VIEW_BLR is NULL)) THEN DROP TABLE VENDA_ITENS;
GOSTEI 0
Pestana_
25/07/2008
tente assim:
flw.
IF (EXISTS(SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE (RDB$RELATION_NAME = ´VENDA_ITENS´) AND (RDB$VIEW_BLR IS NULL))) THEN EXECUTE STATEMENT ´DROP TABLE VENDA_ITENS´;
flw.
GOSTEI 0
Pestana_
25/07/2008
estou supondo que você esteja utilizando SP!
flw.
flw.
GOSTEI 0