我必須清除某些表在Oracle數據庫然而,當我在與運行下面的代碼的OracleCommand命令的ExecuteNonQuery問題
public static void ClearDataTables(IList<string> tableNames)
{
string connectionString = "CONNECTIONSTRING";
using (OracleConnection connection = new OracleConnection())
{
connection.ConnectionString = connectionString;
connection.Open();
foreach (string table in tableNames)
{
OracleCommand command = connection.CreateCommand();
string sql = String.Format("DELETE FROM TOA_REPORTING.{0}", table);
command.CommandText = sql;
command.ExecuteNonQuery();
}
connection.Close();
}
}
我調用此方法與此列表
ClearDataTables(new List<string> { "GROUP_DEFINITION", "GROUP_REPORT_EMAIL_LIST", "GROUP_EQUIPMENT_GROUP_STN_XREF"});
問題
它運行前兩個表罰款,但在第三個,它被卡住,應用程序永遠運行...
有趣的是,當我切換「GROUP_REPORT_EMAI L_LIST「和」GROUP_EQUIPMENT_GROUP_STN_XREF「 應用程序在遇到第二個表名稱後永遠運行。
因此,總之,該函數在碰到「GROUP_EQUIPMENT_GROUP_STN_XREF」時永遠運行。我已經驗證過,通過在蟾蜍身上測試它生成的SQL是可行的。
其他人遇到這個問題?
編輯 - 前兩個表確實在運行時被清除。
解決方案
string connectionString = "CONNECTIONSTRING";
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand command = connection.CreateCommand();
OracleTransaction trans = connection.BeginTransaction();
command.Transaction = trans;
foreach (string table in tableNames)
{
string sql = String.Format("DELETE FROM TOA_REPORTING.{0}", table);
command.CommandText = sql;
command.ExecuteNonQuery();
}
trans.Commit();
}
TRUNCATE將是一個非常好的解決方案,但是我沒有權限這麼做!
任何最終的解決方案與完整的源代碼示例工作呢? – Kiquenet 2013-10-28 08:29:43