Spesso si ha bisogno di accedere ad un parametro di ritorno di una stored procedure di SQL Server.
Ad esempio la seguente SP aggiunge la data ad una tabella e restituisce l'identity del record appena inserito:
CREATE PROCEDURE sp_NuovoUtente @RecordID int OUTPUT AS BEGIN INSERT INTO contatore (Data) VALUES (GETDATE()) SELECT @RecordID = @@IDENTITY GO
Il codice C# necessario ad accedere al parametro di ritorno sarà questo:
public int Insert() { using (SqlConnection conn = new SqlConnection(DataStore.strconn)) { // apertura connessione conn.Open(); using (SqlCommand cmd = new SqlCommand(query, conn)) { cmd.CommandType = CommandType.StoredProcedure; // parametro di Output SqlParameter p1 = new SqlParameter("@RecordID", SqlDbType.Int, 1); p1.Direction = ParameterDirection.Output; cmd.Parameters.Add(p1); // eseguo la query cmd.ExecuteNonQuery(); // solo ora ho la collection popolata e posso restituire il valore return Convert.ToInt32(cmd.Parameters["@RecordID"].Value); } } }
E' utile sottolineare che nel caso in cui la stored procedure restituisca anche un resulset, che andiamo ad utilizzare con un SqlDataReader, il parametro non sarà valorizzato fino al completo scorrimento dello stesso.
Questo effetto non si ha con il DataSet, che è riempito direttamente usando un DataReader.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Visualizzare contenuti Fullscreen con HTML5
- Leggere e scrivere su cookie tramite Blazor
- Richiamare programmaticamente le operazioni di aggiornamento, eliminazione e inserimento di FormView, DetailsView e GridView
- Realizzare siti sicuri con ASP.NET Web Pages
- Il web control DropDownList di ASP.NET
- Un helper method per replicare un template per ogni proprietà con ASP.NET MVC
- Operazioni di selezione su una DataTable
- Dependency injection in ASP.NET MVC 5 con Ninject
- Aumentare la scalabilità di ASP.NET Core Web API con caching client side
- Accedere con ASP.NET ad un documento XML creato dall'oggetto recordset di ADO e ASP