Die Definition für Spalte 'nvarchar' muss einen datatyp enthalten

Ich habe einen Cursor mit einem alter table Befehl innerhalb von ihm, die ich verwenden möchte, um neue Spalten in einer bestimmten Tabelle zu erstellen. Spaltennamen enthalten Werte aus einer Spalte aus einer anderen Tabelle, also, warum ich den Cursor dazu benutzt habe. Jedenfalls bekomme ich immer diese Fehlermeldung: Msg 173, Level 15, State 1, Line 1 Die Definition für Spalte 'nvarchar' muss einen datatyp enthalten. . Jetzt habe ich alle datatypen (gut, ich glaube ich tat, ich überprüft) und ich kann nicht otu, warum ich immer diese Nachricht bekommen. Konnte nicht finden, ein ähnliches Problem auf Google, so dass ich beschließen, meine erste Queston jemals auf dieser Website zu fragen. Hoffnung für eine schnelle Antwort. Hier ist der Code:

DECLARE @rbr_param nvarchar(255) DECLARE @cName nvarchar(255) SET @cName = 'P_'+@rbr_param+'_P' DECLARE curs CURSOR FOR SELECT DISTINCT rbr_param FROM dbo.parametri_pomocna ORDER BY rbr_param OPEN curs FETCH NEXT FROM curs INTO @rbr_param WHILE @@FETCH_STATUS = 0 BEGIN EXEC('ALTER TABLE dbo.Parametri ADD ' + @cName + ' nvarchar(255)') FETCH NEXT FROM curs INTO @rbr_param END CLOSE curs DEALLOCATE curs 

   

@cName wird nicht automatisch aktualisiert, wenn der Wert von @rbr_param aktualisiert wird. Du musst diese Zeile verschieben

 SET @cName = 'P_'+@rbr_param+'_P' 

innerhalb der loop

Ich denke, setzen Sie den Wert nach dem Abruf ..

 DECLARE @rbr_param nvarchar(255) DECLARE @cName nvarchar(255) DECLARE curs CURSOR FOR SELECT DISTINCT rbr_param FROM dbo.parametri_pomocna ORDER BY rbr_param OPEN curs FETCH NEXT FROM curs INTO @rbr_param WHILE @@FETCH_STATUS = 0 BEGIN SET @cName = 'P_'+@rbr_param+'_P' EXEC('ALTER TABLE dbo.Parametri ADD ' + @cName + ' nvarchar(255)') FETCH NEXT FROM curs INTO @rbr_param END CLOSE curs DEALLOCATE curs