我得到以下异常:
"ERROR [HY090] [Informix .NET provider]Invalid string or buffer length."
当我尝试调用以下方法时:
public static int PrepareSal(int year, int month, int calcYear)
{
using (IfxConnection con = new IfxConnection(ConfigurationManager.ConnectionStrings["testable"].ToString()))
{
int res = 0;
StringBuilder cmdTxt = new StringBuilder();
cmdTxt.Append("hkr_calc");
using (var myIfxCmd = new IfxCommand(cmdTxt.ToString(), con))
{
myIfxCmd.CommandType = CommandType.StoredProcedure;
if (con.State == ConnectionState.Closed)
{
con.Open();
}
myIfxCmd.Parameters.Clear();
myIfxCmd.Parameters.Add("p_year", IfxType.Integer, year);
myIfxCmd.Parameters.Add("p_month", IfxType.Integer, month);
myIfxCmd.Parameters.Add("p_calc_year", IfxType.Integer, calcYear);
// myIfxCmd.CommandTimeout = 15000;
res = myIfxCmd.ExecuteNonQuery(); //exception
}
con.Close();
con.Dispose();
return res;
}
}
当我在我的sql编辑器中调用该过程时,它工作正常,但大约需要10分钟!
答案 0 :(得分:1)
本来可以期待的
cmdTxt.append(hkr_calc @p_year, @p_month, @p_calc_year)
或其他一些。 ?无论如何,标记可能是参数的占位符。
PS你不需要在一个使用区块中关闭或处理con,并且它总是最初关闭,除非你已经填满了连接池。