PROBLEMI CON VARIABILI IN EXEC

sabato 25 novembre 2006 - 20.47

antogavi Profilo | Newbie

Mi sto cimentando per la prima volta con Sql,

ho necessità di eseguire una select la cui sintassi è contenuta in un campo di tabella. Nella tabella è contenuta una variabile e nonostante la dichiari prima il messaggio di errore che ritorna è dichiarare la variabile scalare.

In sostanza la query è così strutturata:

declare @test1 as varchar (200),
@base as varchar (20)

select @test1=rtrim(codcomp) from U_dibacomp
BEGIN
set @base='100'
exec (@test1);
END

ed il valore che assume la variabile @test1 dopo la prima select è il seguente
SELECT 'ZSI'+@base

ma viene restituito il seguente messaggio di errore
Messaggio 137, livello 15, stato 2, riga 1
Dichiarare la variabile scalare "@base".

mentre se modifico la riga di comando di exec
exec (@test1) 100
allora il messaggio è di sintassi non corretta.

Grazie a chiunque può darmi indicazioni.
Antonello

lbenaglia Profilo | Guru

>ma viene restituito il seguente messaggio di errore
>Messaggio 137, livello 15, stato 2, riga 1
>Dichiarare la variabile scalare "@base".

Ciao Antonello,

l'errore che ricevi è corretto in quanto il comando eseguito con l'EXEC appartiene ad uno scope differente rispetto a quello dove hai dichiarato la variabile, generando un piano di esecizione distinto.
Per risolvere il problema devi ricorrere alla stored procedure di sistema sp_executesql come nel seguente esempio:
http://groups.google.it/group/microsoft.public.it.sql/browse_thread/thread/d6823056e0589f76/

>Grazie a chiunque può darmi indicazioni.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

antogavi Profilo | Newbie


Lorenzo,

ero convinto di aver risposto. Dal forum però non si vede (o forse sto facendo un pò diconfusione io, vista l'ora).

In ogni caso grazie. Tutto funziona.
Ciao
Antonello
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