[ql server 2008] ritornaew identity da stored procedure

giovedì 25 marzo 2010 - 11.43

cicemoi Profilo | Junior Member

Salve,
ho creato una stored d'inserimento che mi dovrebbe tornare in output l'identity inserita/generata

lato ASP.net ho fatto inquesto modo:

SqlParameter parOut = new SqlParameter("@idOut", SqlDbType.Int);
parOut.Direction = ParameterDirection.Output;

e nella stored ho dichiarato il parametro in questo modo:

@idOut int OUTPUT

e me lo faccio ritornare in questo modo:

set @idOut = scope_identity()
return @idOut

solo ceh nel ricavare poi il value ( parOut.Value = command.ExecuteNonQuery())
sembra che il valore sia sempre 1 cioè il numero delle righe inserite non l'idenity!!!!

chi mi sa dire se c'è un'impostazione di sqlServer ceh devo applicare o se sbaglio qualche istruzione?????

grazie milleeeeeeeeeeeeeeeeeeeeeeeeeeeeee

lbenaglia Profilo | Guru

>lato ASP.net ho fatto inquesto modo:
>
>SqlParameter parOut = new SqlParameter("@idOut", SqlDbType.Int);
>parOut.Direction = ParameterDirection.Output;
>
>e nella stored ho dichiarato il parametro in questo modo:
>
>@idOut int OUTPUT
>
>e me lo faccio ritornare in questo modo:
>
>set @idOut = scope_identity()
>return @idOut

Ciao Cinzia,

Dato che hai definito un parametro di output non server eseguire la RETURN che è appunto il valore di ritorno di una sp (differente da un parametro di output).

>solo ceh nel ricavare poi il value ( parOut.Value = command.ExecuteNonQuery())
>sembra che il valore sia sempre 1 cioè il numero delle righe
>inserite non l'idenity!!!!
Ecco, il metodo ExecuteNonQuery() restituisce appunto il numero di righe modificate.
Per leggere il parametro di output non devi fare altro che interrogare la collection Parameters() come nel seguente esempio:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=12216

>grazie milleeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Prego.

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

cicemoi Profilo | Junior Member

si il problema era proprio nell'assegnazionde del executenonquery al value del parametro di output

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