我有几个用于更新不同表的存储过程。当我执行它们时,我得到如下例外
过程或函数指定了太多参数
我尝试通过互联网找到答案,但无法修复 这是我的一个存储过程的代码
cmd.CommandText = "update_HS_HR_EMP_BANK_AADM";
cmd.Parameters.Add("@appNo", SqlDbType.VarChar).Value = appNo;
cmd.Parameters.Add("@BRANCH_CODE", SqlDbType.VarChar).Value = branch;
cmd.Parameters.Add("@ACCOUNTNO", SqlDbType.VarChar).Value = account;
cmd.Parameters.Add("@ACCOUNT_TYPE", SqlDbType.VarChar).Value = type;
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
这是我的存储过程
ALTER PROCEDURE [dbo].[update_HS_HR_EMP_BANK_AADM]
@appNo int,
@BRANCH_CODE VARCHAR(10),
@ACCOUNTNO VARCHAR(50),
@ACCOUNT_TYPE VARCHAR(1)
AS
BEGIN
Update [HS_HR_EMP_BANK_AADM]
SET
[BBRANCH_CODE]=@BRANCH_CODE
,[EBANK_ACC_NO]=@ACCOUNTNO
,[EBANK_ACC_TYPE_FLG]=@ACCOUNT_TYPE
,[EBANK_ACTIVE_FLAG]=1
,[LAST_MODIFIED_DATE]=GETDATE()
Where App_no=@appNo
END
答案 0 :(得分:2)
您应该尝试调查
检查连接字符串以检查它是否正在访问正确的数据库
尝试指定命令类型:
cmd.CommandType = System.Data.CommandType.StoredProcedure;
并将您传递给appNo的参数类型从Varchar更改为Int。
cmd.Parameters.Add("@appNo", SqlDbType.VarChar).Value = appNo;
根据存储过程,它应该是int。
cmd.Parameters.Add("@appNo", SqlDbType.Int).Value = appNo;
答案 1 :(得分:0)
您的传递参数类型不匹配。 @appNo
添加为varchar
,但在程序中为int
。
更改此
cmd.Parameters.Add("@appNo", SqlDbType.VarChar).Value = appNo;
到此
cmd.Parameters.Add("@appNo", SqlDbType.Int).Value = appNo;