2010-07-06 31 views
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;"; 

它可能是庫列表問題?該程序只引用庫列表中的一個文件。有什麼建議麼?

回答

3

嘗試這樣的:

using (var conn = new iDB2Connection(_CONNSTRING)) 
using (var cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 

    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "MPRLIB.SIGNTIMESHEET"; 
    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(); 
} 
+0

該問題的SQLStatement應該已經排除了PARMS。你的帖子讓我朝着正確的方向前進。感謝幫助! – 2010-07-06 19:29:48

+1

您也可以查看這篇文章:http://www.netsplore.com/PublicPortal/blog.aspx?EntryID=30 – 2010-07-06 19:30:09

+1

作爲一個值得注意的事情,即使您已經將它包裝在使用中聲明IBM提供的某些DB2 .NET程序集版本即使封閉在using塊中也沒有正確關閉連接。 – kd7 2010-07-06 19:37:59