sql >> Database teknologi >  >> RDS >> Sqlserver

Dynamisk oprettelse af tabel i tsql

Ville du være i stand til at bruge sådan noget?

DECLARE @Tab VARCHAR(MAX)
SET @Tab = 'CREATE TABLE #Whatever ('

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL
,'
FROM @This
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')'
PRINT @Tab
-- EXEC (@Tab)

To punkter:Du vil måske opdage, at du bliver nødt til at oprette temp-tabellen uden at bruge dynamisk sql, og derefter justere select-sætningen for at ændre tabellen; dette er for at tabellen eksisterer i den aktuelle kontekst - hvis create-sætningen er i dynamisk, kan du få en fejl.

Jeg kan ikke lide at bruge dynamisk sql som denne - hvis du kunne bruge en pivot senere til at returnere kolonnerne, kunne det være en bedre mulighed (jeg er ikke sikker på, om det er muligt i dette tilfælde).




  1. Kan ikke få kodningen rigtigt i MySQL

  2. Fejl 1215:Kan ikke tilføje fremmednøglebegrænsning

  3. Postgresql indsæt trigger for at indstille værdi

  4. MySQL-syntaksfejl