ConflictOpiton not working
Posted: Sat 06 Sep 2008 08:11
I get the same update statement when I change the ConflictOption to OverwriteChanges.
=ConflictOption.CompareAllSearchableValues
UPDATE "PMIS_EU"."SS_PP" SET "PG" = :p1, "PC" = :p2, "PT" = :p3, "PN" = :p4, "PP" = :p5, "PS" = :p6, "PID" = :p7 WHERE (("PG" = :p8) AND ("PC" = :p9) AND ("PT" = :p10) AND ("PN" = :p11) AND ((:p12 = 1 AND "PP" IS NULL) OR ("PP" = :p13)) AND ((:p14 = 1 AND "PS" IS NULL) OR ("PS" = :p15)) AND ("PID" = :p16))
=ConflictOption.OverwriteChanges]
UPDATE "PMIS_EU"."SS_PP" SET "PG" = :p1, "PC" = :p2, "PT" = :p3, "PN" = :p4, "PP" = :p5, "PS" = :p6, "PID" = :p7 WHERE (("PG" = :p8) AND ("PC" = :p9) AND ("PT" = :p10) AND ("PN" = :p11) AND ((:p12 = 1 AND "PP" IS NULL) OR ("PP" = :p13)) AND ((:p14 = 1 AND "PS" IS NULL) OR ("PS" = :p15)) AND ("PID" = :p16))
if I set .SetAllValues then I get the following error:
ORA-01461: can bind a LONG value only for insert into a LONG column
I'm using:
OS: Windows2003
VS2008 .Net 3.5 SP1
CoreLab.Data.dll 4.70.23.0
CoreLab.Oracle.dll 4.75.41.0
OracleDB 9i
select='SELECT PG, PC, PT, PN, PP, PS, PID FROM SS_PP'
connectstiring='Server=rob;Direct=True;Sid=rob;Persist Security Info=True;User Id=xxx_EU;Password=ee'
Code:
dda = new CLOracle.OracleDataAdapter(select, this.clOracleConn);
dda.MissingSchemaAction = MissingSchemaAction.AddWithKey;
dda.TableMappings.Add("Table", table);
scbCommand = new CLOracle.OracleCommandBuilder(dda);
scbCommand.Quoted = true;
scbCommand.UpdatingFields = "";
//OscbCommand.SetAllValues = true;
scbCommand.ConflictOption = ConflictOption.OverwriteChanges;
cmdUpdate = scbCommand.GetUpdateCommand();
Debug.WriteLine(cmdUpdate.CommandText);
records = dda.Update(dataset, table);
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
A first chance exception of type 'System.Data.DBConcurrencyException' occurred in System.Data.dll
Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.
=ConflictOption.CompareAllSearchableValues
UPDATE "PMIS_EU"."SS_PP" SET "PG" = :p1, "PC" = :p2, "PT" = :p3, "PN" = :p4, "PP" = :p5, "PS" = :p6, "PID" = :p7 WHERE (("PG" = :p8) AND ("PC" = :p9) AND ("PT" = :p10) AND ("PN" = :p11) AND ((:p12 = 1 AND "PP" IS NULL) OR ("PP" = :p13)) AND ((:p14 = 1 AND "PS" IS NULL) OR ("PS" = :p15)) AND ("PID" = :p16))
=ConflictOption.OverwriteChanges]
UPDATE "PMIS_EU"."SS_PP" SET "PG" = :p1, "PC" = :p2, "PT" = :p3, "PN" = :p4, "PP" = :p5, "PS" = :p6, "PID" = :p7 WHERE (("PG" = :p8) AND ("PC" = :p9) AND ("PT" = :p10) AND ("PN" = :p11) AND ((:p12 = 1 AND "PP" IS NULL) OR ("PP" = :p13)) AND ((:p14 = 1 AND "PS" IS NULL) OR ("PS" = :p15)) AND ("PID" = :p16))
if I set .SetAllValues then I get the following error:
ORA-01461: can bind a LONG value only for insert into a LONG column
I'm using:
OS: Windows2003
VS2008 .Net 3.5 SP1
CoreLab.Data.dll 4.70.23.0
CoreLab.Oracle.dll 4.75.41.0
OracleDB 9i
select='SELECT PG, PC, PT, PN, PP, PS, PID FROM SS_PP'
connectstiring='Server=rob;Direct=True;Sid=rob;Persist Security Info=True;User Id=xxx_EU;Password=ee'
Code:
dda = new CLOracle.OracleDataAdapter(select, this.clOracleConn);
dda.MissingSchemaAction = MissingSchemaAction.AddWithKey;
dda.TableMappings.Add("Table", table);
scbCommand = new CLOracle.OracleCommandBuilder(dda);
scbCommand.Quoted = true;
scbCommand.UpdatingFields = "";
//OscbCommand.SetAllValues = true;
scbCommand.ConflictOption = ConflictOption.OverwriteChanges;
cmdUpdate = scbCommand.GetUpdateCommand();
Debug.WriteLine(cmdUpdate.CommandText);
records = dda.Update(dataset, table);
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
A first chance exception of type 'System.Data.DBConcurrencyException' occurred in System.Data.dll
Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.