0
我试图调用外部存储过程(调用RPG程序)。我不断收到以下错误:执行DB2外部存储过程的问题
"Exception Details: IBM.Data.DB2.iSeries.iDB2SQLErrorException: SQL0104 Token @SSN was not valid. Valid tokens: :."
这里是我的代码:
using (iDB2Connection conn = new iDB2Connection(_CONNSTRING))
{
conn.Open();
string sqlStatement = "MPRLIB.SIGNTIMESHEET (@SSN, @SIGNATURE, @WORKSTATION, @TOTALHOURS, @COMMENT)";
//string sqlStatement = "MPRLIB.SIGNTIMESHEET (?, ?, ?, ?, ?)";
iDB2Command cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = sqlStatement;
cmd.Parameters.Add("@SSN", timesheet.EmployeeUniqueKey.ToString("0000000000"));
cmd.Parameters.Add("@SIGNATURE", timesheet.EmployeeTypedName);
cmd.Parameters.Add("@WORKSTATION", timesheet.EmployeeSignedComputer);
cmd.Parameters.Add("@TOTALHOURS", GetJobHoursTotal(timesheet.Id).ToString("00000.000").Replace(".", ""));
cmd.Parameters.Add("@COMMENT", timesheet.EmployeeComments);
cmd.ExecuteNonQuery();
conn.Close();
}
我似乎无法弄清楚发生了什么或者为什么我收到上述错误。我的连接字符串看起来像:
private const string _CONNSTRING = "DataSource=192.168.50.200;DefaultCollection=QMFILES;Naming=sql;UserID=XXX;Password=XXX;";
它可能是库列表问题?该程序只引用库列表中的一个文件。有什么建议么?
该问题的SQLStatement应该已经排除了PARMS。你的帖子让我朝着正确的方向前进。感谢帮助! – 2010-07-06 19:29:48
您也可以查看这篇文章:http://www.netsplore.com/PublicPortal/blog.aspx?EntryID=30 – 2010-07-06 19:30:09
作为一个值得注意的事情,即使您已经将它包装在使用中声明IBM提供的某些DB2 .NET程序集版本即使封闭在using块中也没有正确关闭连接。 – kd7 2010-07-06 19:37:59