1
雖然我發現了很多同一個問題的答案,但是沒有解決我的問題,所以我發佈了這個問題。我在嘗試使用c#中的Oracle.ManagedDataAccess
將數據插入到Oracle DB時遇到了not enough values
異常。Oracle管理的數據訪問:拋出的值不夠c#
下面我的代碼
string cmdQuery = string.Format("INSERT INTO HKSTF087.FREIGHTCHARGES" +
"(QTM_ID,TITLECODE,SERVICETYPE,FREIGHTCHARGERATE,FREIGHTCHARGETYPE,FREIGHTCHARGETARRIFCODE," +
"ORIGINID,FREIGHTCALCULATIONTYPE,EFFECTIVEFROMDATE,EFFECTIVETHRUDATE,CREATEDBY,CREATEDDATETIME,UPDATEDBY,UPDATEDDATETIME)" +
"VALUES(:QTM_ID,:TITLECODE,:SERVICETYPE,:FREIGHTCHARGERATE,:FREIGHTCHARGETYPE,:FREIGHTCHARGETARRIFCODE" +
":ORIGINID,:FREIGHTCALCULATIONTYPE,:EFFECTIVEFROMDATE,:EFFECTIVETHRUDATE,:CREATEDBY,:CREATEDDATETIME,:UPDATEDBY,:UPDATEDDATETIME)");
OracleParameter[] parameters = new OracleParameter[]
{
new OracleParameter("QTM_ID",OracleDbType.Int32,origin.OriginId, ParameterDirection.Input),
new OracleParameter("TITLECODE", OracleDbType.Varchar2, origin.TitleCode.Trim(), ParameterDirection.Input),
new OracleParameter("SERVICETYPE", OracleDbType.Varchar2, origin.ServiceType.Trim(), ParameterDirection.Input),
new OracleParameter("FREIGHTCHARGERATE", OracleDbType.Decimal, origin.FreightChargeRate, ParameterDirection.Input),
new OracleParameter("FREIGHTCHARGETYPE", OracleDbType.Varchar2, origin.FreightChargeRateType, ParameterDirection.Input),
new OracleParameter("FREIGHTCHARGETARRIFCODE", OracleDbType.Varchar2, origin.FreightChargeTariffCode, ParameterDirection.Input),
new OracleParameter("ORIGINID", OracleDbType.Varchar2, origin.OriginId.ToString(), ParameterDirection.Input),
new OracleParameter("FREIGHTCALCULATIONTYPE", OracleDbType.Varchar2, origin.FreightCalculationType, ParameterDirection.Input),
new OracleParameter("EFFECTIVEFROMDATE", OracleDbType.Date, effectiveFromDate, ParameterDirection.Input),
new OracleParameter("EFFECTIVETHRUDATE", OracleDbType.Date, "12/31/2099", ParameterDirection.Input),
new OracleParameter("CREATEDBY", OracleDbType.Varchar2, "system", ParameterDirection.Input),
new OracleParameter("CREATEDDATETIME", OracleDbType.Date, createdDate, ParameterDirection.Input),
new OracleParameter("UPDATEDBY", OracleDbType.Varchar2, null, ParameterDirection.Input),
new OracleParameter("UPDATEDDATETIME", OracleDbType.Date, null, ParameterDirection.Input)
};
//other code
cmd.ExecuteNonQuery();
cmd.ExecuteNonQuery();
拋出異常ORA-00947: not enough values
但據我可以看到所有的參數都是蠻好的,也許我不能看到問題的原因。我也用另一個表做過類似的事情,並且向表中插入數據。