过程或函数Proc_PIP_Eemployee指定的参数太多



我收到错误

过程或函数Proc_PIP_Eemployee指定了太多参数

当尝试从C#代码调用过程Proc_PIP_Employee时。检查的参数计数与检查的参数相同。数据类型也是相同的。即使在那之后也会出现同样的错误。

C#代码是

public int Add_Record(Employee emp)
{
try
{
if (con.State != ConnectionState.Open)                
con.Open();               
using (SqlCommand cmd = con.CreateCommand())
{
SqlParameter RETURN_VALUE_OUTPUT = new SqlParameter();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "dbo.Proc_PIP_Employee";
cmd.Parameters.Add("@Flag", SqlDbType.Int).Value = 1;
cmd.Parameters.Add("@Empid", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = emp.Name ;
cmd.Parameters.Add("@Designation", SqlDbType.VarChar).Value = emp.Designation;
cmd.Parameters.Add("@Department", SqlDbType.VarChar).Value = emp.Department;
cmd.Parameters.Add("@DateofJoin", SqlDbType.DateTime).Value = emp.Dateofjoin;
cmd.Parameters.Add("@Phone", SqlDbType.VarChar).Value = emp.Phone;
cmd.Parameters.Add("@Isactive", SqlDbType.Int).Value = emp.IsActive;
cmd.Parameters.Add("@LoginUser", SqlDbType.NVarChar).Value = "admin";
RETURN_VALUE_OUTPUT = cmd.Parameters.Add("@ReturnId",SqlDbType.Int);
RETURN_VALUE_OUTPUT.Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
ReturnID = Convert.ToInt32(RETURN_VALUE_OUTPUT.Value.ToString());
}             
}
catch (SqlException ex)
{
}
return ReturnID;
}

存储过程为:

ALTER PROCEDURE [dbo].[Proc_PIP_Employee]
@Flag int,
@Empid int,
@Name varchar(500),
@Designation varchar(200),
@Department varchar(200),
@DateofJoin datetime,
@Phone varchar(3000),
@Isactive int,
@LoginUser nvarchar(500)
AS
BEGIN
SET NOCOUNT ON ;
DECLARE @errorMessage VarChar(8000), 
@errorSeverity Int,
@errorState Int,
@ReturnId Int,
@AlCode varchar(50),
@AlDesc varchar(1000),
@AlOp varchar(50),
@AlStatus varchar(50)
BEGIN TRY
BEGIN TRANSACTION
IF (@Flag = 1)
BEGIN
IF EXISTS (SELECT 1 FROM dbo.PIP_Employee 
GROUP BY Name, Phone 

您正在将此存储过程的OUTPUT参数添加到C#代码中,但存储过程接口中没有@ReturnId OUTPUT参数:

SqlParameter RETURN_VALUE_OUTPUT = new SqlParameter();
RETURN_VALUE_OUTPUT = cmd.Parameters.Add("@ReturnId",SqlDbType.Int);
RETURN_VALUE_OUTPUT.Direction = ParameterDirection.Output;

如果您试图捕获返回值,则使用ParameterDirection.ReturnValue而不是

SqlParameter RETURN_VALUE_OUTPUT = new SqlParameter();
RETURN_VALUE_OUTPUT = cmd.Parameters.Add("@ReturnId",SqlDbType.Int);
RETURN_VALUE_OUTPUT.Direction = ParameterDirection.ReturnValue;

最新更新