ANYDAC MSSQL tworzenie tabeli/tabeli tymczasowej

0

Witam

Usiłuje utworzyć tabele gdzie w create table chce podać nazwę tabeli jako zmienną.
Ponieważ pół jest dość dużo nie mogę tego wykonać poprzez Query.SQL.Add Delphi krzyczy że za duży ciąg znaków max 255.

Więc chciałbym to wykonać np w oparciu o komponent TADCommand gdzie umieściłem zapis
CREATA TABLE :nazwa (definicje pól pola) niestety wyskakuje błąd Incorected syntax near '@P1'.
Próbowałem to zmienić na CREATA TABLE #:nazwa (definicje pól pola) - przy tworzeniu nie zgłasza błędu ale przy próbie otwarcia krzyczy ze nie ma obiektu o nazwie określonej w zmiennej nazwa.

Proszę o podpowiedz co źle robie.

0
baranro0 napisał(a)

Witam

Usiłuje utworzyć tabele gdzie w create table chce podać nazwę tabeli jako zmienną.
Ponieważ pół jest dość dużo nie mogę tego wykonać poprzez Query.SQL.Add Delphi krzyczy że za duży ciąg znaków max 255.

użyj dodatkowej zmiennej typu widestring w której zapiszesz całe zapytanie, a potem tylko w Query.SQL.Add:=zapytanie; np.

var nazwa_tabeli, zapytanie:widestring;
begin
nazwa_tabeli:='inna';
zapytanie:='CREATE TABLE '+nazwa_tabeli+' (id int(11) NOT NULL auto_increment,nazwa varchar(50) NOT NULL, PRIMARY KEY  (id), UNIQUE KEY nazwa (nazwa));';
test.ZQuery1.SQL.Text:=zapytanie;
test.ZQuery1.ExecSQL;
end;

u mnie działa jak należy chociaż ja używam Zeosów, ale myślę że na ANYDAC też powinno? :-)
Ps. Oczywiście to zapytanie to tylko przykład - może być o wieeeeeeeele dłuższe :-)
pozdrawiam

Więc chciałbym to wykonać np w oparciu o komponent TADCommand gdzie umieściłem zapis
CREATA TABLE :nazwa (definicje pól pola) niestety wyskakuje błąd Incorected syntax near '@P1'.
Próbowałem to zmienić na CREATA TABLE #:nazwa (definicje pól pola) - przy tworzeniu nie zgłasza błędu ale przy próbie otwarcia krzyczy ze nie ma obiektu o nazwie określonej w zmiennej nazwa.

Proszę o podpowiedz co źle robie.

0

Dziękuje za podpowiedź , działą świetnie.
Ale ma kolejny problem :-) jak sprawdzić czy tabela istnieje jeżeli tak to tabela nie powinna być tworzona. Próbowałem CREATE TABLE IF NOT EXISTS ale nie przyjmuje tego polecnia

0
  1. http://msdn.microsoft.com/en-us/library/ms174979.aspx
  2. AnyDAC nie ma nic do tego czy baza obsługuje dane zapytanie czy nie. MSSQL nie ma IF NOT EXIST więc AnyDAC w żaden sposób automagicznie nie sprawi, że takie zapytanie będzie obsługiwane

1 użytkowników online, w tym zalogowanych: 0, gości: 1