public static (bool Result, string ErrMsg) Oracle_406_fountion2(CsvDataToSQL_406 CsvToSql, string SQL406_connectionString)
{
using (OracleConnection conn = new OracleConnection(SQL406_connectionString))
{
try
{
conn.Open();
// 使用 Transaction 確保 DELETE 與 INSERT 同時成功或失敗
using (OracleTransaction trans = conn.BeginTransaction())
{
// 1. 執行 DELETE
string sqlDel = "DELETE FROM QT406RE WHERE QTFNM = :QTFNM";
using (OracleCommand cmdDel = new OracleCommand(sqlDel, conn))
{
cmdDel.Parameters.Add(":QTFNM", OracleDbType.Varchar2).Value = CsvToSql.QTFNM;
cmdDel.ExecuteNonQuery();
}
// 2. 執行 INSERT
string sqlIns = @"INSERT INTO QT406RE (
QTFNM, QTDT, QTSTDT, QTLOT, QTAITM,
QTRDT1, QTRID1, QTRDT2, QTRID2, QTRDT3, QTRID3, QTRDT4, QTRID4,
QTEDDT, QTUPDT
) VALUES (
:QTFNM, :QTDT, :QTSTDT, :QTLOT, :QTAITM,
:QTRDT1, :QTRID1, :QTRDT2, :QTRID2, :QTRDT3, :QTRID3, :QTRDT4, :QTRID4,
:QTEDDT, :QTUPDT
)";
using (OracleCommand cmdIns = new OracleCommand(sqlIns, conn))
{
// 正確添加參數的方法
cmdIns.Parameters.Add(":QTFNM", CsvToSql.QTFNM);
cmdIns.Parameters.Add(":QTDT", CsvToSql.QTDT);
cmdIns.Parameters.Add(":QTSTDT", CsvToSql.QTSTDT);
cmdIns.Parameters.Add(":QTLOT", CsvToSql.QTLOT);
cmdIns.Parameters.Add(":QTAITM", CsvToSql.QTAITM);
cmdIns.Parameters.Add(":QTRDT1", CsvToSql.QTRDT1);
cmdIns.Parameters.Add(":QTRID1", CsvToSql.QTRID1);
cmdIns.Parameters.Add(":QTRDT2", CsvToSql.QTRDT2);
cmdIns.Parameters.Add(":QTRID2", CsvToSql.QTRID2);
cmdIns.Parameters.Add(":QTRDT3", CsvToSql.QTRDT3);
cmdIns.Parameters.Add(":QTRID3", CsvToSql.QTRID3);
cmdIns.Parameters.Add(":QTRDT4", CsvToSql.QTRDT4);
cmdIns.Parameters.Add(":QTRID4", CsvToSql.QTRID4);
cmdIns.Parameters.Add(":QTEDDT", CsvToSql.QTEDDT);
cmdIns.Parameters.Add(":QTUPDT", CsvToSql.QTUPDT);
cmdIns.ExecuteNonQuery();
}
trans.Commit(); // 全部成功才提交
return (true, "");
}
}
catch (Exception ex)
{
return (false, $"SQL執行錯誤: {ex.Message}");
}
}
}[2025-12-19 -> QT406 CSV轉入Sql失敗! 錯誤: SQL執行錯誤: ORA-01861: 文字與格式字串不符
https://docs.oracle.com/error-help/db/ora-01861/]
最新发布