Array
(
)

Qual comando usar para verificar se uma tabela existe

Rounilo
   - 19 nov 2007

Necessito de um comando que me informe se uma tabela já está criada ou não.

Uso Delphi7 com Sql sewrver (MSDE).

Obrigado

Ara.es
   - 19 nov 2007

vc pode usar isso:

SELECT *
FROM SYSOBJECTS
WHERE XTYPE = ´U´
AND NAME = ´NOME_TABELA´

substituia o ´NOME_TABELA´, pelo nome da sua tabela, essa tabela Sysobjects, guarda os objetos criados, nela vc tem as tabelas do usuario e do sistema, alem de as primary keys, foreign keys e etc... de um select nela e veja que as tabelas tem o xType = ´U´ e as foreign keys tem xType = ´F´, Primary Keys tem = ´PK´ assim vc pode listar qualquer objeto do seu banco.. Flw!!

Rounilo
   - 20 nov 2007

No SQL Query Analyzer o comando informado por vc ´if exists (SELECT * FROM dbo.SYSOBJECTS WHERE XTYPE = ´U´ AND NAME = ´DAMS´)
then
print ´Tabela existe´
else
print ´Tabela não exite.´;´ funciona.

Entrtanto, quando crio uma pequena aplicação Delphi recebo mensagenas de erro.

procedure TForm1.Button1Click(Sender: TObject);
begin
if exists (SELECT * FROM dbo.SYSOBJECTS WHERE XTYPE = ´U´ AND NAME = ´DAMS´)
then
print ´Tabela existe´
else
print ´Tabela não exite.´;
end;
end.

ERROS
[Error] Unit1.pas(28): Undeclared identifier: ´exists´
[Error] Unit1.pas(28): Undeclared identifier: ´FROM´
[Error] Unit1.pas(37): Statement expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit ´Unit1.pas´

O que devo fazer ?

Djjunior
   - 15 jan 2008

crie uma query com
SELECT * FROM dbo.SYSOBJECTS WHERE XTYPE = ´U´ AND NAME = :tabela

sua função vai ser

#Código

functin tabelaExiste(tab: string): boolean;
begin 
  qry.Close;
  qry.ParamByName(´tabela´) = tab;
  qry.Open;
  Result := not qry.IsEmpty;
  qry.Close;
end;


Rounilo
   - 18 jan 2008

Ok.

Obrigado.