I want to insert a new record in a table using stored procedure:
string cs = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
string name = txtEmployeeName.Text;
string gender = ddlGender.SelectedValue;
int salary = Convert.ToInt32(txtSalary.Text);
SqlParameter op = new SqlParameter();
op.ParameterName = "@EmployeeId";
op.SqlDbType = System.Data.SqlDbType.Int;
op.Direction = System.Data.ParameterDirection.Output;
string str = string.Format( "exec spAddEmployee '{0}', '{1}', '{2}', {3}", name,gender,salary,op);
SqlCommand cmd = new SqlCommand(str,con);
con.Open();
cmd.ExecuteNonQuery();
string EmpId = op.Value.ToString();
lblMessage.Text = "Employee ID = " + EmpId;
}
I am not using cmd.Parameters.AddWithValue()
, instead I am passing parameters as shown above. But I am getting an error:
Must declare the scalar variable "@EmployeeId".
Here is my stored procedure:
CREATE PROCEDURE spAddEmployee
@Name NVARCHAR(50),
@Gender NVARCHAR(20),
@Salary INT,
@EmployeeId INT OUT
AS
BEGIN
INSERT INTO tblEmployees
VALUES (@Name, @Gender, @Salary)
SELECT @EmployeeId = SCOPE_IDENTITY()
END