2017-07-30 79 views
0

我从c#表单传递下面的参数。但是会出错。我找不到原因在哪里。请帮帮我。过程或函数Sp_Add_Moeny指定的参数太多

SqlParameter[] arrParam = new SqlParameter[3]; 
arrParam[0] = new SqlParameter("@mRegNo", SqlDbType.BigInt, 8); 
arrParam[0].Value = Convert.ToInt64(m); 

arrParam[1] = new SqlParameter("@amount", SqlDbType.Decimal); 
arrParam[1].Value = money; 

arrParam[2] = new SqlParameter("@intResult", SqlDbType.Int); 
arrParam[2].Direction = ParameterDirection.Output; 

int result = objDUT.ExecuteSqlSP(arrParam, "Sp_Add_Moeny"); 

这里是下面的功能:

public int ExecuteSqlSP(SqlParameter[] arrParam, string strSPName) 
{ 
     OpenConnection(); 
     _mDataCom.CommandType = CommandType.StoredProcedure; 
     _mDataCom.CommandText = strSPName; 
     _mDataCom.CommandTimeout = 30; 

     for (int i = 0; i < arrParam.Length; i++) 
     { 
      _mDataCom.Parameters.Add(arrParam[i]); 
     } 

     _mDataCom.ExecuteNonQuery(); 

     int intResult = Int32.Parse(_mDataCom.Parameters["@intResult"].Value.ToString()); 

     CloseConnection(); 
     DisposeConnection(); 

     return intResult; 
} 

请提出一个解决方案。谢谢

+0

你在哪里definte,Sp_Add_Moeny它预计会有多少个参数? – JeffUK

+0

什么错误? Google搜索到的是什么?请阅读并在[mcve]上采取行动。 – philipxy

+1

备注:您应该**不要**为存储过程使用'sp_'前缀。微软已经保留了这个前缀以供自己使用(参见*命名存储过程*)](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx),以及你将来有可能冒着名字冲突的风险。 [这对你的存储过程性能也是不利的](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)。最好只是简单地避免使用'sp_'并将其他内容用作前缀 - 或者根本没有前缀! –

回答

0

您正在指定存储过程不期望的参数。请确保您的存储过程具有与

1.mRegNo
2.amount
3.intResult(你有没有贴出你的PROC,你应该让我们可以看到的一个片段三个参数你是如何在SQL声明本)

如果参数的数目相同,然后检查参数的数据类型及其在存储过程中的对应匹配

希望这有助于!

+0

我声明在这个过程中的参数'@mRegNo as bigint', \t'@amount as decimal', \t'@intResult int output'我仍然无法弄清楚问题所在。 –

+0

你可以发布你存储的proc代码吗? – Winnie

+0

这里是PROC代码,:ALTER PROCEDURE [DBO] [Sp_Add_Moeny] \t '@mRegNo' 作为BIGINT, \t '@amount' 为十进制, \t '@intResult' 作为INT输出 AS BEGIN \t 。声明'@maxPayId','@bMessage','@comment 执行[sp_IA]'@mRegNo','@ amount','@ maxPayid','@ bMessage','@ comment','@ intResult输出 如果(@@ error <> 0) \t begin \t \t set'@ intResult'= 1 \t \t return'@intResult' end END –

相关问题