Risultato query

lunedì 11 dicembre 2006 - 08.55

escaflowne Profilo | Junior Member

Ciao a tutti, secondo voi dove sbaglio?
Data questa procedura:
CREATE PROCEDURE [dbo].[esisteScadenzaDay] @p1 int = 0, --giorno @p2 int = 0, --mese @p3 int = 0, --anno @quanti int OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; select @quanti = count(distinct id) from tblScadenza where idAnno = (select id from tblAnno where anno = @p3) and idMese = (select id from tblMese where mese = @p2) and idGiorno = (select id from tblGiorno where giorno = @p1) END
se lancio questa query mi restituisce 0 (io mi sarei aspettato 1)
declare @quanti as integer exec @quanti = dbo.esisteScadenzaDay 12, 12,2006, @quanti print @quanti
se lancio la query della procedure in questo modo
declare @quanti as integer select @quanti = count(distinct id) from tblScadenza where idAnno = (select id from tblAnno where anno = 2006) and idMese = (select id from tblMese where mese = 12) and idGiorno = (select id from tblGiorno where giorno = 12) print @quanti
mi torna 1, proprio come mi aspettavo io.
Grazie

lbenaglia Profilo | Guru

> @quanti int OUTPUT
>
>se lancio questa query mi restituisce 0 (io mi sarei aspettato
>1)
>declare @quanti as integer
>exec @quanti = dbo.esisteScadenzaDay 12, 12,2006, @quanti
>print @quanti

Dato che il parametro @quanti è definito di output, quando richiami la stored procedure devi specificare che la variabile @quanti dovrà contenere il valore del parametro, specificando la keyword OUTPUT:

declare @quanti as integer exec @quanti = dbo.esisteScadenzaDay 12, 12,2006, @quanti OUTPUT print @quanti

>Grazie
Prego.

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

escaflowne Profilo | Junior Member

>> @quanti int OUTPUT
>>
>>se lancio questa query mi restituisce 0 (io mi sarei aspettato
>>1)
>>declare @quanti as integer
>>exec @quanti = dbo.esisteScadenzaDay 12, 12,2006, @quanti
>>print @quanti
>
>Dato che il parametro @quanti è definito di output, quando richiami
>la stored procedure devi specificare che la variabile @quanti
>dovrà contenere il valore del parametro, specificando la keyword
>OUTPUT:
>
>declare @quanti as integer
>exec @quanti = dbo.esisteScadenzaDay 12, 12,2006, @quanti OUTPUT
>print @quanti
>
>>Grazie
>Prego.
>
>Ciao!
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>http://blogs.dotnethell.it/lorenzo/
>http://italy.mvps.org

Ti ringrazio per la risposta.
Il problema, tuttavia, è sempre lo stesso. Se aggiungo, come giustamente mi hai fatto notare, la keyword OUTPUT il risultato è sempre lo stesso: 0 nella prima query, 1 nella seconda.

Ma non è la stessa cosa? Non capisco, è come se mi azzerasse la variabile di OUTPUT
Boh

lbenaglia Profilo | Guru

>Il problema, tuttavia, è sempre lo stesso. Se aggiungo, come
>giustamente mi hai fatto notare, la keyword OUTPUT il risultato
>è sempre lo stesso: 0 nella prima query, 1 nella seconda.

Ecco l'errore:

exec @quanti =....

per quale motivo lo valorizzi come valore di ritorno se è un parametro di output?

DECLARE @quanti INT EXEC dbo.esisteScadenzaDay 12, 12, 2006, @quanti OUTPUT PRINT CAST(@quanti AS varchar(10))

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

escaflowne Profilo | Junior Member

...e come disse Homer Simpson... DOH

Grazie, ho cercato mille cose diverse e non mi sono accorto della più banale.
Mea culpa

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