Variable Tabelle erstellen CREATE TABLE mit for-Schleife

helene1

Mitglied
Hallo,

ich möchte eine SQL Tabelle erstellen und mein Problem ist, dass ich die Spaltenbezeichnung in einem Array stehen habe.
Nur weiß ich vor der Anwendereingabe leider noch nicht, wieviele Spalten erzeugt werden müssen.

Nun meine Frage:
Kann ich in einem
"CREATE TABLE...-Statement" eine for-Schleife einfügen?

Wie würdet ihr dieses Problem lösen

Vielen Dank,

Helene
 
Ich weiß zwar nicht welche Sprache du verwendest (oder willst du das nur in SQL machen) aber prinzipielle ist dass doch kein Problem mit der Schleife einen kompletten CREATE TABLE Befehl in einem String zusammenzubauen.
 
Hallo,
ich habe ein variables StringGrid in Delphi und möchte nun nach diesem StringGrid eine OracleTabelle erstellen.
Bei einer konstanten Tabelle habe ich es bis jetzt immer so gemacht:
SQLQuery.SQL.Text := 'CREATE TABLE '+Tab_Name.Text+' (Time TIMESTAMP, S1_1 VARCHAR2 (4000))';
SQLQuery.ExecSQL;
und es hat wunderbar funktioniert!
Nun wollte ich es mit dem StringGrid wie folgt machen:
SQLQuery.SQL.Text := 'CREATE TABLE '+Tab_Name.Text+'(Time TIMESTAMP)';
SQLQuery.ExecSQL;
for I := 0 to IntForm - 1 do
begin
speicher := StringGrid1.Cells[I,0];
SQLQuery.SQL.Text := 'ALTER TABLE '+Tab_Name.Text+'_timedepend ADD ('+speicher+'
VARCHAR2 (4000))';
SQLQuery.ExecSQL;
end;
So funktioniert es aber nicht, es wird die Tabelle nicht mal erstellt!!
Was mache ich nur falsch?
Gruß und Danke,
sunshineh
 
Ich kenn jetzt Deplhi nicht aber prinzipiell müsste es doch so gehen:
Code:
Zeichenkette strg = "Create Table " + tableName + "(";
for zeile in tabelle
   strg = strg + zeile.spaltenname + " VARCHAR(255),"
end
strg = strg + ");"

strg einmal zur Sicherheit ausgeben ob der richtig aussieht und dann an die Datenbank senden.
 
Zurück