title: Stored procedure or function expects parameter which was not supplied
body: <p>I am trying to insert data into a SQL Server database by calling a stored procedure, but I am getting the error </p>
  
  <blockquote>
    <p>*Procedure or function 'Insertion' expects parameter '@Emp_no', which was not supplied*</p>
  </blockquote>
  
  <p>My stored procedure is called <code>Insertion</code>. I have checked it thoroughly and no parameters is missing also I have checked it by using a label. The label shows the value but I don't know why I am getting the error. </p>
  
  <p>My code is </p>
  
  <pre><code>    try
      {
          SqlCommand cmd = new SqlCommand();
          cmd.Parameters.Clear();
          cmd.CommandType = CommandType.StoredProcedure;
          cmd.CommandText = "Insertion";
          cmd.Connection = con;
  
          if (rdb_Male.Checked)
          {
              int @Emp_no = Convert.ToInt32(txtbx_Empno.Text);
              string @Emp_name = txtbx_Emp_Name.Text;
              double @phone = Convert.ToDouble(txtbx_Phone.Text);
              string @Email = txtbx_Email.Text;
              string @Password = txtbx_Pwd.Text;
              string @Gender = rdb_Male.Text;
              DateTime @Dob = Convert.ToDateTime(dob);
              string @Address = txtbx_Address.Text;
              string @Designation = txtbx_Designation.Text;
              string @Qualification = txtbx_Qual.Text;
              double @Experience = Convert.ToDouble(txtbx_Exp.Text);
              double @Salary = Convert.ToDouble(txtbx_Sal.Text);
              DateTime @Doj = Convert.ToDateTime(doj);
          }
          else if (rdb_Female.Checked)
          {
              int @Emp_no = Convert.ToInt32(txtbx_Empno.Text);
              string @Emp_name = txtbx_Emp_Name.Text;
              double @phone = Convert.ToDouble(txtbx_Phone.Text);
              string @Email = txtbx_Email.Text;
              string @Password = txtbx_Pwd.Text;
              string @Gender = rdb_Female.Text;
              DateTime @Dob = Convert.ToDateTime(dob);
              string @Address = txtbx_Address.Text;
              string @Designation = txtbx_Designation.Text;
              string @Qualification = txtbx_Qual.Text;
              double @Experience = Convert.ToDouble(txtbx_Exp.Text);
              double @Salary = Convert.ToDouble(txtbx_Sal.Text);
              DateTime @Doj = Convert.ToDateTime(doj);
          }
  
          if (con.State==ConnectionState.Closed)
              con.Open();
  
          LABEL.Text = txtbx_Empno.Text;
  
          cmd.ExecuteNonQuery();
  
          lbl_Errormsg.Visible = true;
          lbl_Errormsg.Text = "Record Inserted Successfully";
  
          con.Close();
      }
  </code></pre>
  
  <p>and the stored procedure is </p>
  
  <pre><code>ALTER PROCEDURE dbo.Insertion
  (
  @Emp_no int,
  @Emp_name varchar(30),
  @phone numeric(10,0),
  @Email varchar(30),
  @Password varchar(10),
  @Gender varchar(6),
  @Dob date,
  @Address varchar(100),
  @Designation varchar(20),
  @Qualification varchar(20),
  @Experience numeric(4,2),
  @Salary numeric(10,2),
  @Doj date
  )
  AS
   Begin
     Insert into Register (Emp_no, Emp_name, phone, Email, Password, Gender, Dob, Address, Designation, Qualification, Experience, Salary, Doj)
     Values(@Emp_no, @Emp_name, @phone, @Email, @Password, @Gender, @Dob, @Address, @Designation, @Qualification, @Experience, @Salary, @Doj)
   End
  </code></pre>
  
  <p>Please help me. Thanks in advance.</p>