GARANTIR DESCONTO

Fórum Testar se tabela existe dentro do FB #60030

25/07/2008

0

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.


Paulo

Paulo

Responder

Posts

25/07/2008

Joaoshi

Colega, vê se ajuda:

[b:95b0b5980b]select rdb$relation_name from rdb$relations[/b:95b0b5980b] where rdb$relation_name = ´NomeSuaTabela´;


Responder

Gostei + 0

25/07/2008

Paulo

JOAO, EU DOU UM IF EXISTS(SELECT.....) = 0 THEN DROP...? OU COMO FAÇO?


Responder

Gostei + 0

25/07/2008

Joaoshi

Paulo, pelo que entendi seria pelo IF EXISTS.


Responder

Gostei + 0

25/07/2008

Paulo

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;



Responder

Gostei + 0

25/07/2008

Joaoshi

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;



Responder

Gostei + 0

25/07/2008

Paulo

É o mesmo código que o meu. Continua dando erro.


Responder

Gostei + 0

25/07/2008

Joaoshi

No seu código não estava escrito corretamente o WHERE e faltava fechar o parentesis após ´VENDAS_ITENS´.

Espero ter ajudado.


Responder

Gostei + 0

06/08/2008

Martins

Não testei as dicas do senhores, mas vejam se a dica do sr. Vampas ajuda vcs.

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.


Responder

Gostei + 0

06/08/2008

Martins

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;



Responder

Gostei + 0

09/08/2008

Pestana_

tente assim:

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.


Responder

Gostei + 0

09/08/2008

Pestana_

estou supondo que você esteja utilizando SP!


flw.


Responder

Gostei + 0

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

Aceitar