Sql server - add columns dinamico

venerdì 26 giugno 2009 - 14.46

cicemoi Profilo | Junior Member

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

alx_81 Profilo | Guru

>salve,
ciao

>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
>
>mi da il seguente errore
>" Line 74: Incorrect syntax near '(' "
Questo perchè SQL dinamico si compone come una stringa, non puoi appoggiare i parametri così direttamente sullo statement SQL effettivo.
Ma la mia domanda è a monte, perchè devi generare dinamicamente le colonne in base all'anno? Non puoi fare tutto in verticale? Ad esempio un campo ANNO?
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

cicemoi Profilo | Junior Member

hai svelato il mio arcano: ho creato una stringa sql ed ho fatto l'exec; questo algoritmo mi è stato richiesto perchè in partenza ho + anni su + righe invece ho bisogno di avere un'unica riga con tutti gli anni
Grazie cmq per il suggerimento

Cinzia
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5