Dynamisches SQL: Tabellen in gespeicherten Prozeduren erstellen
Problem:
Tabellen in gespeicherten Prozeduren erstellen Prozeduren, die eine Tabellenvariable verwenden, sind nicht möglich, da dadurch eine Tabellenvariable und keine temporäre Variable erstellt wird Tabelle.
Lösung:
Um Tabellen dynamisch in gespeicherten Prozeduren zu erstellen, ist dynamisches SQL erforderlich. Mit dynamischem SQL können wir eine SQL-Anweisung als Zeichenfolge konstruieren und ausführen.
Beispiel:
CREATE PROCEDURE sproc_BuildTable @TableName NVARCHAR(128) ,@Column1Name NVARCHAR(32) ,@Column1DataType NVARCHAR(32) ,@Column1Nullable NVARCHAR(32) AS DECLARE @SQLString NVARCHAR(MAX) SET @SQString = 'CREATE TABLE '+@TableName + '( '+@Column1Name+' '+@Column1DataType +' '+@Column1Nullable +') ON PRIMARY ' EXEC (@SQLString) GO
Verwendung:
sproc_BuildTable 'Customers','CustomerName','VARCHAR(32)','NOT NULL'
Überlegungen:
Dynamisch Das Erstellen von Tabellen in gespeicherten Prozeduren hat mehrere Nachteile:
Alternative Lösung:
Um mehrere Tabellen in verschiedenen Shops zu erstellen, kann ein Viele-zu-Viele-Beziehungsmodell verwendet werden. Eine Zuordnungstabelle würde Geschäfte und Produkte verknüpfen und so die Ermittlung der günstigsten Preise für bestimmte Produkte in verschiedenen Geschäften ermöglichen.
Das obige ist der detaillierte Inhalt vonWie kann dynamisches SQL das Problem der Tabellenerstellung in gespeicherten Prozeduren lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!