0
我需要從ASP.NET 2.0網站刪除Oracle 10g數據庫中的數據。從asp.net網站的oracle 10g中刪除 - 等待commint?
方法DeleteMonthPlan我用執行刪除命令。問題是這個命令在「瀏覽器」中執行很長時間,最後不執行刪除命令。也許它等待提交?問題的根源是什麼?
該SQL命令DELETE C_PPC_PLAN WHERE MFG_MONTH = 'VALUE' 是確定。
MFG_MONTH列類型是VARCHAR2(16)
首先我需要調用方法DeleteMonthPlan和比我需要調用InsertDatePlan。
private static void DeleteMonthPlan(string monthIndex)
{
try
{
using (var conn = new OracleConnection(GenerateConnectionString()))
{
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = string.Format("DELETE C_PPC_PLAN WHERE MFG_MONTH='{0}'", monthIndex);
cmd.ExecuteNonQuery();
}
}
catch (Exception exception)
{
throw exception;
}
}
比如這個方法我在插入時使用,它是確定。
public void InsertDatePlan(DatePlan dp,
string monthIndex)
{
DeleteMonthPlan(monthIndex);
try
{
using (var conn = new OracleConnection(GenerateConnectionString()))
{
conn.Open();
var cmd = conn.CreateCommand();
cmd.Parameters.Add(":Site", OracleType.VarChar).Value = dp.Site;
cmd.Parameters.Add(":Week", OracleType.VarChar).Value = dp.MfgWeek;
cmd.Parameters.Add(":Month", OracleType.VarChar).Value = dp.MfgMonth;
cmd.Parameters.Add(":Year", OracleType.VarChar).Value = dp.MfgYear;
cmd.Parameters.Add(":Input", OracleType.Number).Value = dp.Input;
cmd.Parameters.Add(":Output", OracleType.Number).Value = dp.Output;
cmd.Parameters.Add(":LMUser", OracleType.VarChar).Value = dp.LmUser;
cmd.Parameters.Add(":PartNo", OracleType.VarChar).Value = dp.PartNo;
cmd.Parameters.Add(":PartNoDesc", OracleType.VarChar).Value = dp.PartNoDesc;
cmd.CommandText = string.Format("INSERT INTO C_PPC_PLAN (CREATE_TIME, SITE, MFG_DAY,MFG_WEEK,MFG_MONTH,MFG_YEAR,INPUT,OUTPUT,LM_TIME,LM_USER,PART_NO,PART_NO_DESC)"
+ " VALUES (to_date('{0}', 'dd-mm-yyyy hh24:mi:ss'), :Site ,to_date('{1}', 'dd-mm-yyyy hh24:mi:ss'),:Week,"
+ ":Month,:Year,:Input,:Output,to_date('{2}', 'dd-mm-yyyy hh24:mi:ss'),:LMUser,:PartNo,:PartNoDesc)"
, dp.CreateTime, dp.MfgDate, dp.LmTime);
cmd.ExecuteNonQuery();
}
}
catch (Exception exception)
{
throw exception;
}
}
我試過使用交易。我呼籲下這個方法,但從未完成它意味着部分
trans.Rollback(); or conn.Close();
從不執行。
private static void DeleteMonthPlan(string monthIndex)
{
var conn = new OracleConnection(GenerateConnectionString());
conn.Open();
OracleCommand cmd= conn.CreateCommand();
OracleTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Transaction = trans;
try
{
cmd.CommandText = "DELETE C_PPC_PLAN WHERE MFG_MONTH='6'";
cmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception e)
{
trans.Rollback();
}
finally
{
conn.Close();
}
}
你能解釋一下「終於delete命令不執行」的意思?它是否超時?它會返回一個錯誤嗎?如果是這樣,有什麼錯誤?它運行但刪除沒有行嗎?或者是其他東西?您能否通過其他交互式工具(即SQL * Plus)運行相同的DELETE語句?它在該環境中運行得更快嗎? –
它仍在運行,例如5分鐘,但在表中沒有刪除記錄...我沒有得到錯誤。我在測試這個命令時使用了PL/SQL,它可以工作。 – totoz