Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MSSQL - Tabellenspalten mittel Variablennamen erzeugen (https://www.delphipraxis.net/23580-mssql-tabellenspalten-mittel-variablennamen-erzeugen.html)

Jelly 5. Jun 2004 16:30


MSSQL - Tabellenspalten mittel Variablennamen erzeugen
 
Hallo,

ich versuche mittels einer Stored Procedure auf einem MSSQL Server eine Tabelle zu erstellen. Als Übergabeparameter übegebe ich der Procedure einen Wert @N, welches die Anzahl der Spalten angibt. Nun soll in der SP die Tabelle erzeugt werden, mit den Spaltennamen N1,N2,N2,...,NN.

Befehle wie alter table test add @Spaltenname int
schlagen jedoch fehl, mit der Fehlermeldung "Line 20: Incorrect syntax near '@Spaltenname'"

Es scheint also, daß ich bei der Erstellung von Tabelle keine Variablennamen benutzen kann.

Hat jemand ne Idee, wie ich das denn jetzt umgehen kann?

Gruß und danke,
Tom

nieurig 7. Jun 2004 06:42

Re: MSSQL - Tabellenspalten mittel Variablennamen erzeugen
 
Guten Morgen Jelly,
die Ausführung von SQL-Statements in denen ein Parameter auftaucht ist wohl in den meisten Datenbanken nicht möglich. Mit MySQL kenne ich mich nicht aus, auf dem MSSQL-Server könnte man Dein Problem so lösen:

SQL-Code:
create procedure variableSelect @Tabelle varchar(30)
as begin
  declare @strSQL nvarchar(1000)
  set @strSQL = 'select * from ' + @Tabelle
  exec sp_executesql @strSQL
end
Code:
sp_executesql
ist eine Systemprozedur mit der ein beliebiges SQL-Statement ausgeführt werden kann. Der Übergabeparameter ist ein String (Datentyp nvarchar() bzw. nchar() ) und den kann man wiederum in einer Procedure erzeugen.

Vielleicht gibt es ja bei MySQL was ähnliches.

Viel Erfolg
Niels

Jelly 7. Jun 2004 08:55

Re: MSSQL - Tabellenspalten mittel Variablennamen erzeugen
 
Zitat:

Zitat von nieurig
Mit MySQL kenne ich mich nicht aus, auf dem MSSQL-Server könnte man Dein Problem so lösen

Sehr schön... zumal ich das Problem ja auch bei MSSQL lösen muss :roll:
Werd das mal daheim ausprobieren heut abend ausprobieren da ich hier an der Uni kein MSSQL installier hab. Diese Systemprozedur hab ich noch nicht gekannt, klingt aber sehr vielversprechend...

Vielen Dank und Gruß,
Tom

nieurig 7. Jun 2004 12:59

Re: MSSQL - Tabellenspalten mittel Variablennamen erzeugen
 
Mein Gott bin ich blind.
Mit :nerd: wär das nicht passiert.

Niels

Jelly 7. Jun 2004 13:03

Re: MSSQL - Tabellenspalten mittel Variablennamen erzeugen
 
Naja, morgens um 7:42 seh ich auch noch nicht so klar :zwinker:

Gruß,
Tom

Jelly 10. Jun 2004 18:16

Re: MSSQL - Tabellenspalten mittel Variablennamen erzeugen
 
Hallo,

ech ne coole Sache mit sp_executesql... Klappt einwandfrei, danke :bounce2:

Gruß,
Tom

nieurig 11. Jun 2004 06:33

Re: MSSQL - Tabellenspalten mittel Variablennamen erzeugen
 
Guten Morgen Tom,
freut mich zu hören.

Würde mich interessieren, ob es ähnliche Lösungen für MySQl oder Firebird gibt. Kennt sich jemand damit aus?

Niels

Jelly 11. Jun 2004 13:50

Re: MSSQL - Tabellenspalten mittel Variablennamen erzeugen
 
Zitat:

Zitat von nieurig
Würde mich interessieren, ob es ähnliche Lösungen für MySQl oder Firebird gibt. Kennt sich jemand damit aus?

Hihi... das ist genau der Grund warum ich das mit MSSQL mach. MySQL kennt ja noch nicht einmal Stored Procedures. In anderen Worten, bei MySQL bist du eh auf eine Clientseitige Lösung angewiesen, z.B. indem du dir den SQL Befehl in Delphi zusammenfriemelst und mittels query.ExecSQL an den Server schickst.

Bevor MySQL Stored Procedures unterstützt werden wir noch bis Version 5 warten müssen, die aber immerhin schon in einer Beta Version verfügbar ist.

Gruß,
Tom


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz