No se puede insertar Boolean en Oracle utilizando Dapper

dapper oracle

Pregunta

Tengo problemas para insertar un booleano en una base de datos Oracle 12 usando Dapper.

La excepción que obtengo es ORA-00932: inconsistent datatypes: expected NUMBER got BOOLEAN

El CommandText es

INSERT INTO crossqueryb.counterparty (Id,Name,IsBroker,DefaultPortfolioId) VALUES (:Id,:Name,:IsBroker,:DefaultPortfolioId)

IsBroker se define como un NUMBER(1) .

Cuando inspecciono OracleParameter, las propiedades DbType y OracleDbType se establecen en Boolean . El valor es false , el tipo del valor es object {bool} .

Los parámetros se pasan al método de consulta como IDictionary<string,object> , no como el tipo de dominio real o un tipo anónimo.

¿Necesito escribir un manejador de tipos personalizado para esto o me falta algo obvio?

Respuesta popular

Oracle SQL no tiene un tipo de datos BOOLEAN ( PL / SQL sí pero no SQL).

IsBroker se define como un NUMBER(1) .

Necesitará convertir su valor booleano a un valor numérico ya que Oracle no sabrá cómo piensa realizar la conversión ( false/true => 0/1 o -1/+1 o -7/3 ).



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué