In this article I will explain how to get scalar value return from a Stored Procedure in ADO.Net using ExecuteScalar method of the SqlCommand class in C# and VB.Net.
SqlCommand ExecuteScalar is a handy function when you want to just need one Cell value i.e. one column and one row.
 
Note: For more information on the ADO.Net SqlCommand ExecuteScalar method, please read my article Using ADO.Net ExecuteScalar method in ASP.Net with examples in C# and VB.Net
 
 
Database
Here I am making use of Microsoft’s Northwind Database. The download and install instructions are provided in the following article.
 
 
Stored Procedure
The following stored procedure inserts a record in the Employees table and returns the ID of the inserted record using SCOPE_IDENTITY in the SELECT statement.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AddEmployeeReturnID]
      @FirstName varchar(50),
      @LastName varchar(50),
      @BirthDate datetime,
      @City varchar(50),
      @Country varchar(50)
AS
BEGIN
      SET NOCOUNT ON;
      INSERT INTO  Employees (FirstName, LastName, BirthDate, City, Country)
      VALUES (@FirstName, @LastName, @BirthDate, @City, @Country)
      SELECT SCOPE_IDENTITY()
END
 
 
Namespaces
You will need to import the following namespaces.
C#
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
 
VB.Net
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
 
 
Get Scalar value returned from Stored Procedure using ExecuteScalar method
The following event handler is executed when the Insert button is clicked. Inside the event handler, the Stored Procedure is executed using the ADO.Net ExecuteScalar method and the retuned value of the Employee ID is fetched and displayed in a Label control.                  
C#
protected void Insert(object sender, EventArgs e)
{
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("AddEmployeeReturnID", con))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text.Trim();
            cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text.Trim();
            cmd.Parameters.Add("@BirthDate", SqlDbType.DateTime).Value = txtBirthDate.Text.Trim();
            cmd.Parameters.Add("@City", SqlDbType.VarChar).Value = txtCity.Text.Trim();
            cmd.Parameters.Add("@Country", SqlDbType.VarChar).Value = txtCountry.Text.Trim();
            con.Open();
            object o = cmd.ExecuteScalar();
            if (o != null)
            {
                string id = o.ToString();
                lblMessage.Text = "Record inserted successfully. ID = " + id;
            }
            con.Close();
        }
    }
}
      
VB.Net
Protected Sub Insert(sender As Object, e As EventArgs)
    Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
    Using con As New SqlConnection(constr)
        Using cmd As New SqlCommand("AddEmployeeReturnID", con)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text.Trim()
            cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text.Trim()
            cmd.Parameters.Add("@BirthDate", SqlDbType.DateTime).Value = txtBirthDate.Text.Trim()
            cmd.Parameters.Add("@City", SqlDbType.VarChar).Value = txtCity.Text.Trim()
            cmd.Parameters.Add("@Country", SqlDbType.VarChar).Value = txtCountry.Text.Trim()
            con.Open()
            Dim o As Object = cmd.ExecuteScalar()
            If o IsNot Nothing Then
                Dim id As String = o.ToString()
                lblMessage.Text = Convert.ToString("Record inserted successfully. ID = ") & id
            End If
            con.Close()
        End Using
    End Using
End Sub
 
 
Screenshot
The following screenshot displays the scalar value returned from the Stored Procedure.
Get Scalar value returned from Stored Procedure using ExecuteScalar method in C# and VB.Net
 
Downloads

Download Code