ExecuteNonQuery

mercoledì 17 novembre 2010 - 01.36
Tag Elenco Tags  SQL Server 2005

PEPE Profilo | Senior Member

Salve a tutti,
volevo capire una cosa sul metodo EcecuteNonQuery.

Sull'msdn ho trovato questa info:

È possibile utilizzare il metodo ExecuteNonQuery per eseguire operazioni di catalogo (ad esempio, eseguire query sulla struttura di un database o creare oggetti del database quali tabelle) oppure modificare i dati contenuti in un database senza utilizzare un oggetto DataSet eseguendo le istruzioni UPDATE, INSERT o DELETE.

Sebbene il metodo ExecuteNonQuery non restituisca alcuna riga, eventuali parametri di output o valori restituiti mappati a parametri vengono compilati mediante dati.

Nel caso delle istruzioni UPDATE, INSERT e DELETE, il valore restituito è il numero di righe interessate dal comando. Per tutti gli altri tipi di istruzioni, il valore restituito è -1. Anche se si verifica un'operazione di rollback, il valore restituito sarà -1.

Ora il mio problema è che io le query le eseguo attraverso le stored procedure, quindi probabilmente lui farà una Exec. Volevo capire se c'è un modo per farsi restituire con il comando ExecuteNonQuery il numero di righe coinvolte utilizzando i comandi Insert, Update, Delete ma da store procedure.
Altrimenti questo comando è davvero inutile, si userebbe sempre l'executescalar mettendo nella stored procedure una select del numero di righe coinvolte come ultima istruzione t-sql. C'ho preso???? :D

Grazie 1000,
Luca.

lbenaglia Profilo | Guru

>Sebbene il metodo ExecuteNonQuery non restituisca alcuna riga,
>eventuali parametri di output o valori restituiti mappati a parametri
>vengono compilati mediante dati.
...
>Ora il mio problema è che io le query le eseguo attraverso le
>stored procedure, quindi probabilmente lui farà una Exec. Volevo
>capire se c'è un modo per farsi restituire con il comando ExecuteNonQuery
>il numero di righe coinvolte utilizzando i comandi Insert, Update,
>Delete ma da store procedure.

Definisci appunto un parametro di output e recuperalo dopo l'esecuzione della sp dalla collection Parameters dell'oggetto SqlCommand.
In questo thread troverai un esempio simile a quello che vuoi ottenere:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=12216

>Altrimenti questo comando è davvero inutile, si userebbe sempre
>l'executescalar mettendo nella stored procedure una select del
>numero di righe coinvolte come ultima istruzione t-sql. C'ho
>preso???? :D
No, ExecuteScalar restituisce un valore scalare.

>Grazie 1000,
Prego.

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