Cursore e variabili

giovedì 18 gennaio 2007 - 09.54

robertovecchi Profilo | Newbie

Ciao a tutti,
ho la seguente stored procedure:

declare @tabella varchar(50)
declare @c1 varchar(50)
declare @c2 varchar(50)

set @tabella='tabella'
set @c1='prova'

declare cursore cursor for select c2 from @tabella where c1=@c1 open cursore fetch next from cursore into @c2 while @@fetch_status = 0 begin print @c2 fetch next from cursore into @c2 end close cursore deallocate cursore

.... ma il server (SQL 2000) mi risponde:

Server: messaggio 137, livello 15, stato 2, riga 9 Dichiarare la variabile '@tabella'.

Se invece, al posto della variabile @tabella indico direttamente il nome della tabella, funziona perfettamente.
Sbaglio io da qualche parte oppure, dichiarando un cursore, non posso utilizzare "select .. from variabile ..." ?

lbenaglia Profilo | Guru

>Sbaglio io da qualche parte oppure, dichiarando un cursore, non
>posso utilizzare "select .. from variabile ..." ?

Ciao robertovecchi,

non è possibile parametrizzare il nome della tabella a prescindere dall'utilizzo dei cursori.
L'unica alternativa sarebbe quella di ricorrere al Dynamic SQL ma te lo sconsiglio per tutte le controindicazioni elencate in questo articolo di Erland:

"The Curse and Blessings of Dynamic SQL"
http://www.sommarskog.se/dynamic_sql.html

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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