Click here to Skip to main content
15,921,577 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hai All,

this is my stored procedure,
SQL
USE [Practise]
GO
/****** Object:  StoredProcedure [dbo].[empcrud]    Script Date: 04/11/2013 16:56:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[empcrud](
@Id int=0,
@Name nchar(10)=null,
@Sal int=0,
@City nchar(10)=null,
@Action varchar(10))
as
begin
set nocount on;
if (@Action='insert')
begin

insert emp(Id,Name,sal,city) values(@Id,@Name,@Sal,@City)
end
else if (@Action='update')
begin

update emp set Name=@Name,sal=@Sal,city=@City where Id=@Id
end
 else if (@Action='select')

begin
select * from emp
end
else if (@Action='delete')

begin
delete from emp where Id=@Id
end
End


asp.net:
C#
{
            int id =Convert.ToInt32(txtid.Text);
            string name = Txtname.Text;
            int sal = Convert.ToInt32(Txtadrs.Text);
            string city = Txtdob.Text;
           // Procedure or function empcrud has too many arguments specified.
            SqlConnection con = new SqlConnection(strcon);
            cmd.Connection.Open();
            cmd.CommandText = "empcrud";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@Action", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 50));
            cmd.Parameters.Add(new SqlParameter("@name", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@sal", SqlDbType.Int, 50));
            cmd.Parameters.Add(new SqlParameter("@city", SqlDbType.VarChar, 50));
            cmd.Parameters["@Action"].Value = "insert";
            cmd.Parameters["@Id"].Value = id;
            cmd.Parameters["@name"].Value = name;
            cmd.Parameters["@sal"].Value = sal;
            cmd.Parameters["@city"].Value = city;
            SqlDataAdapter sqlda = new SqlDataAdapter(cmd);
            ds = new DataSet();
            sqlda.Fill(ds);
            con.Close();
          
          
            cmd.ExecuteNonQuery();
            cmd.Connection.Close();
          //  getdata();

        }
 
    }


I am getting error as Procedure or function empcrud has too many arguments specified.

how to resolve this error.
Posted
Updated 11-Apr-13 1:45am
v2

Why are you using SqlDataAdapter. Because you are inserting values to database so your code should be like this :-
I have pasted only last lines of codes.
C#
cmd.Parameters["@Action"].Value = "insert";
 cmd.Parameters["@Id"].Value = id;
 cmd.Parameters["@name"].Value = name;
 cmd.Parameters["@sal"].Value = sal;
 cmd.Parameters["@city"].Value = city;

 //Following  code is used when you are retrieving values from table.
 //SqlDataAdapter sqlda = new SqlDataAdapter(cmd);
 //ds = new DataSet();
 //sqlda.Fill(ds);
 //con.Close();

 con.Open();
 cmd.ExecuteNonQuery();
 con.Close();
 //cmd.Connection.Close();


Good luck.
 
Share this answer
 
use like this may be solve your error

C#
{
            int id =Convert.ToInt32(txtid.Text);
            string name = Txtname.Text;
            int sal = Convert.ToInt32(Txtadrs.Text);
            string city = Txtdob.Text;
           // Procedure or function empcrud has too many arguments specified.
            SqlConnection con = new SqlConnection(strcon);
            cmd.Connection.Open();
            cmd.CommandText = "empcrud";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@Action", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 50));
            cmd.Parameters.Add(new SqlParameter("@name", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@sal", SqlDbType.Int, 50));
            cmd.Parameters.Add(new SqlParameter("@city", SqlDbType.VarChar, 50));
            cmd.Parameters["@Action"].Value = "insert";
            cmd.Parameters["@Id"].Value = id;
            cmd.Parameters["@name"].Value = name;
            cmd.Parameters["@sal"].Value = sal;
            cmd.Parameters["@city"].Value = city;
            SqlDataAdapter sqlda = new SqlDataAdapter(cmd);
            ds = new DataSet();
            sqlda.Fill(ds);
            con.Close();
          
          
            cmd.ExecuteNonQuery();
           cmd.Parameters.Clear();
            cmd.Connection.Close();
          //  getdata();

        }
 
    }
 
Share this answer
 
Hi.. I don't think you need to define size for Integer types

cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 50));

cmd.Parameters.Add(new SqlParameter("@sal", SqlDbType.Int, 50));


it should be

cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));

cmd.Parameters.Add(new SqlParameter("@sal", SqlDbType.Int));



This may clear the error you get.
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900