salve Cinzia,
cinziacip ha scritto:
salve,
ho ho problema con la creazione di una tabella temporanea e con la sua successiva modifica delle colonne in quanto dovrei aggiungere un numero di colonne dinamiche in base a de parametri che mi vengono passati
sto procedendo in questo modo
create table #tmp_VersamentiBCC
(
regione varchar(20) COLLATE Latin1_General_CI_AS,
provincia varchar(20) COLLATE Latin1_General_CI_AS,
matricola varchar(20) COLLATE Latin1_General_CI_AS,
denominazione varchar(120) COLLATE Latin1_General_CI_AS,
abi char(5),
cab char(5)
)
WHILE @i < @numAnni
BEGIN
set @Col1 = 'annoCompetenza' + @i
set @Col2 = 'dataVersamento' + @i
set @Col3 = 'importo' + @i
ALTER TABLE #tmp_VersamentiBCC
ADD (@Col1 char(4)
@Col2 char(10),
@Col3 varchar(20)
)
@i = @i +1
END
mi da il seguente errore
" Line 74: Incorrect syntax near '(' "
chi sa aiutarmi?
Grazie in anticipo
Cinzia
per fortuna non si puo' :)
o almeno non direttamente.. come ben sai gli identificatori devono essere "delle costanti" e non valori recuperati da variabili, e quindi il comando fortunatamente fallisce..
puoi pero' (purtroppo) passare per il workaround tradizionale, che consiste nell'utilizzare codice SQL dinamico..
quindi in definitiva ed a titolo di mero esempio
DECLARE @cmd varchar(1000);
WHILE @i < @numAnni BEGIN
set @Col1 = 'annoCompetenza' + @i ;
SET @cmd = 'ALTER TABLE ... ADD ' + @col1 + 'char(4) ' + ....
EXEC @cmd;
END;
resta comunque un accrocchio a mio parere molto poco elegante, se non orrendo :)
saluti