I need to fetch scope_identity() value from a stored procedure after inserting data in C# code.
Here I am using 3 tier architecture. Please anyone help me
protected void Submit_Click(object sender, EventArgs e)
{
this.CreateUserGroups(strGroupName, strDescription, strGroupType);
}
protected void CreateUserGroups(string strGroupName, string strDescription, string strGroupType)
{
string strReturn = string.Empty;
strReturn = objUser.SaveCreateGroups(strGroupName, strDescription, strGroupType);
}
public string SaveCreateGroups(string strGroupName, string strDescription, string strGroupType)
{
try
{
DataManager.ParamBuilder param = new DataManager.ParamBuilder();
if (strGroupName != string.Empty)
param.AddParam(System.Data.SqlDbType.VarChar, "@c_groupname", strGroupName);
else
param.AddParam(System.Data.SqlDbType.Int, "@c_groupname", DBNull.Value);
if (strDescription != string.Empty)
param.AddParam(System.Data.SqlDbType.VarChar, "@c_description", strDescription);
else
param.AddParam(System.Data.SqlDbType.Int, "@c_description", DBNull.Value);
if (strGroupType != string.Empty)
param.AddParam(System.Data.SqlDbType.Int, "@n_grouptype", strGroupType);
else
param.AddParam(System.Data.SqlDbType.VarChar, "@n_grouptype", DBNull.Value);
String strIsUserExitsInGroup = DataManager.ExecuteScalar("sp_create_user_groups", param.Parameters, true).ToString();
return strIsUserExitsInGroup;
}
catch (Exception e)
{
throw new Exception(e.ToString());
}
}
public static object ExecuteScalar(string procedureNameOrSql, List<SqlParameter> parameters, bool isStoredProcedure)
{
object scalarValue;
using (SqlConnection cn = createConnection())
{
SqlCommand cmd = new SqlCommand(procedureNameOrSql, cn);
if (isStoredProcedure)
cmd.CommandType = CommandType.StoredProcedure;
if (parameters != null)
cmd.Parameters.AddRange(parameters.ToArray());
scalarValue = cmd.ExecuteScalar();
}
return scalarValue;
}
My stored procedure:
CREATE Procedure [dbo].[sp_create_user_groups]
@n_user_group_id int OUTPUT,
@c_groupname varchar(200),
@c_description varchar(200),
@n_grouptype int
As
Declare @IsGroupNameExists int,
@b_active bit
select @IsGroupNameExists = 0
set @b_active = 1
BEGIN
IF exists(select top 1 * from gdt_user_groups where c_group_name = @c_groupname)
BEGIN
select @IsGroupNameExists = 1
END
ELSE
BEGIN
SET NOCOUNT ON;
insert into gdt_user_groups(c_group_name,c_description,n_group_id,b_active,d_modified_dttm,
d_created_dttm)values(@c_groupname,@c_description,@n_grouptype,@b_active,GETDATE(),GETDATE())
select @n_user_group_id = SCOPE_IDENTITY();
select @IsGroupNameExists = 0
END
select @IsGroupNameExists
END
Here where exactly I can fetch the the scope_identity value in C# code. Anyone help?
You need to get value through output parameter, so you must follow these link:
Get output parameter value in ADO.NET
How to use OUTPUT parameter in Stored Procedure
While adding parameter do as below after adding extra parameter in your method
then access the value of your output parameter as below:
Source: Getting the identity of the most recently added record
Code Snippet:
procedure…
Hope the above reference help you more to understand all of this.