Errore variabile scalare non dichiarata

domenica 29 giugno 2014 - 16.50
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  SQL Server 2008 R2

stefano1856 Profilo | Junior Member

Ho creato una query dalla finestra di progettazione di visual studio, e funziona, tranne per il fatto che non mi accetta il parametro.
Se al posto di codratatipo = 1 scrivo codratatipo = @Cod mi da errore "il tipo di dati CLR non esiste o non accessibile " e successivamente "dichiarare la variabile scalare @Cod sintassi non corretta".
Deve essere legato all'struzione CASE ma come risolvere ?

SELECT CodCondizione, SUM(CASE WHEN codratatipo = 1 THEN ImportoMassimale ELSE 0 END) AS Massimali
FROM Rate
GROUP BY CodCondizione

darken Profilo | Newbie

>Ho creato una query dalla finestra di progettazione di visual
>studio, e funziona, tranne per il fatto che non mi accetta il
>parametro.
>Se al posto di codratatipo = 1 scrivo codratatipo = @Cod mi da
>errore "il tipo di dati CLR non esiste o non accessibile " e
>successivamente "dichiarare la variabile scalare @Cod sintassi
>non corretta".
>Deve essere legato all'struzione CASE ma come risolvere ?
>
>SELECT CodCondizione, SUM(CASE WHEN codratatipo = 1 THEN
>ImportoMassimale ELSE 0 END) AS Massimali
> FROM Rate
> GROUP BY CodCondizione
>
>

Ciao,
immagino tu stia parlando di SQL Server giusto?
Hai dichiarato la variabile scalare prima di utilizzarla mediante il DECLARE?
Riesci a postare la Query con la variabile scalare così capisco meglio?


stefano1856 Profilo | Junior Member

ciao,
dall'editor di visual studio non accetta la dichiarazione della variabile scalare,
se inserisco prima della query: DECLARE @cod int;
mi da come errore "Il costrutto o l'istruzione SQL Declare non è supportato",
ma se inserisco direttamente la variabile (cosa che normalmente faccio senza problemi) mi chiede la variabile scalare,

cioè prima la chiede e poi dice che non è supportata ... mah
ma questo avviene solo con l'istruzione CASE , o almeno fino adesso è quello che ho riscontrato

darken Profilo | Newbie

>ciao,
>dall'editor di visual studio non accetta la dichiarazione della
>variabile scalare,
>se inserisco prima della query: DECLARE @cod int;
>mi da come errore "Il costrutto o l'istruzione SQL Declare non
>è supportato",
>ma se inserisco direttamente la variabile (cosa che normalmente
>faccio senza problemi) mi chiede la variabile scalare,
>
>cioè prima la chiede e poi dice che non è supportata ... mah
>ma questo avviene solo con l'istruzione CASE , o almeno fino
>adesso è quello che ho riscontrato

Purtroppo non ho ben capito cosa devi fare, se provi a spiegarmi il tuo abbiettivo vediamo se riesco a darti una mano.
Ti segnalo però che questa Query:

"
DECLARE @cod int /*dichiaro la variabile*/
SET @cod = 1 /*setto la variabile al valore desiderato*/
SELECT CodCondizione, SUM(CASE WHEN codratatipo = @cod THEN ImportoMassimale ELSE 0 END) AS Massimali FROM Rate GROUP BY CodCondizione
"

Eseguita su SQL Server 2012 funziona che è una meraviglia.
Ma tu la query su cosa la esegui? SQL Server?
E cosa intendi con "Query fatta dalla finestra di progettazione Visual Studio"?
Sarò ignorante in materia, ma io uso Visual Studio solo per gli applicativi per tutto quello che riguarda il DB e la creazione delle query la faccio a manina. Anche perchè è difficile "spiegare al sistema" che cosa vuoi, fai prima a farlo a mano ed in molti casi magari anche più ottimizzato senza dover far Join assurde anche perchè, vista così, la tua query non sembra nulla di particolarmente complicato.

stefano1856 Profilo | Junior Member

Ciao,
si uso SQL Server 2005
dalla finestra di progettazione posso fare delle query sulle tabelle con paramentri,
cosa che trovo più comoda che creare delle stored procedure, dato che le viste non accettano paramentri in input.
Immagino che sia solo una questione di abitudine
Quella query infatti fa parte di una query molto più ampia, ma credo proprio che per il costrutto CASE non posso usare questa strada.
Grazie

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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5