Ich habe Probleme beim Einfügen eines Boolean in eine Oracle 12 Datenbank mit Dapper.
Die Ausnahme, die ich bekomme, ist ORA-00932: inconsistent datatypes: expected NUMBER got BOOLEAN
Der Befehlstext ist
INSERT INTO crossqueryb.counterparty (Id,Name,IsBroker,DefaultPortfolioId) VALUES (:Id,:Name,:IsBroker,:DefaultPortfolioId)
IsBroker
ist als NUMBER(1)
.
Wenn ich das OracleParameter überprüfe, werden die DbType- und die OracleDbType-Eigenschaften auf Boolean
. Der Wert ist false
, der Typ des Werts ist object {bool}
.
Die Parameter werden an die Query-Methode als IDictionary<string,object>
, nicht als tatsächlicher Domain-Typ oder anonymer Typ übergeben.
Muss ich dafür einen eigenen Typhandler schreiben oder fehlt mir noch etwas Offensichtliches?
Oracle SQL hat keinen BOOLEAN
Datentyp ( PL / SQL aber nicht SQL).
IsBroker
ist alsNUMBER(1)
.
Sie müssen Ihren booleschen Wert in einen numerischen Wert konvertieren, da Oracle nicht weiß, wie Sie die Konvertierung durchführen -7/3
( false/true
=> 0/1
oder -1/+1
oder -7/3
).