c# - 过程或函数 Proc_PIP_Employee 指定了太多参数
问题描述
我收到错误
过程或函数 Proc_PIP_Employee 指定了太多参数
尝试Proc_PIP_Employee
从 C# 代码调用过程时。检查的参数计数和那些相同。数据类型也相同。即使在那之后得到同样的错误。
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
解决方案
您正在将此存储过程的参数添加到 C# 代码中 - 但存储过程接口中OUTPUT
没有参数:@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;
推荐阅读
- extjs - extjs 3.3 网格分组和求和
- c++ - 用户定义的标准类型推导指南
- hdl - 如何在程序计数器中实现时钟?
- python - 仅当作业使用 python 时没有名为 linq 的模块错误
- python - BeautifulSoup 试图获取选定的值抓取 IMDB 但出现错误
- laravel-7 - 尝试存储图像并将信息存储在数据库表中时遇到问题
- python - Python Chess:如何阻止 chess.engine.SimpleEngine.popen_uci() 打开 shell
- c# - Unity 键盘按键 - 它们的名称是什么?
- eclipse - 如何在 Eclipse 中修复此 Maven 错误 - “无法计算构建计划:无法解析插件或其依赖项之一””
- ssl - LetsEncrypt 续订失败:绑定到端口 80 的问题:无法绑定到 IPv4 或 IPv6 .. Skipping.AFTER I STOPPED APACHE2