348 messaggi dal 13 febbraio 2004
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

cinzia cipriano
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

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de
348 messaggi dal 13 febbraio 2004
è poco elegante ma funzionante!!!

grazie mille
Cinzia

cinzia cipriano

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano

I più letti di oggi

Media
In evidenza
MISC