Page 1 of 1

.Net Core - dotConnect For Oracle Type Cast Error

Posted: Fri 06 Apr 2018 09:07
by Simonare
We are using .Net Core 2.0 as development environment and We have configured to use dotConnect For Oracle V9.5.483 in Direct mode.

However following code fails with
"Cannot convert object of type 'System.Object' to object of type 'Devart.Data.Oracle.OracleObject'.",

Code: Select all

	OracleType localPay5001Type = OracleType.GetObjectType("WESTCORE", "OBJ_LOCALPAY_5001", conn);
	var localPay5001Obj = new OracleObject(localPay5001Type)
	{
		["CRM_NO"] = localPay5001.CrmNo,
		["TRANS_AMOUNT"] = localPay5001.Amount,
		["TRANS_CURRENCY"] = localPay5001.Currency,
		["TRANS_SHORTDESC"] = localPay5001.ShortDesc,
		["TRANS_LONGDESC"] = localPay5001.Desc
	};
	// String.IsNullOrWhiteSpace(localPay5001.Desc) ? (object) DBNull.Value :  localPay5001.ShortDesc;

	var inputParameter =
		new OracleParameter("INPUT_OBJ", OracleDbType.Object, localPay5001Obj, ParameterDirection.Input) {ObjectTypeName = "OBJ_LOCALPAY_5001"};
	command.Parameters.Add(inputParameter);

	var resultParameter = new OracleParameter("OUTPUT_OBJ", OracleDbType.Object, ParameterDirection.Output) {ObjectTypeName = "OBJ_SUCCESS"};
	command.Parameters.Add(resultParameter);

	command.ExecuteNonQuery();
My objects are as follows

Code: Select all

create or replace TYPE          OBJ_LOCALPAY_5001
AS OBJECT
(
   CRM_NO              VARCHAR2(5),
   TRANS_AMOUNT        NUMBER(18,2),
   TRANS_CURRENCY      VARCHAR2(2),
   TRANS_SHORTDESC     VARCHAR2(25 BYTE),
   TRANS_LONGDESC      VARCHAR2(80) 
)

create or replace TYPE          OBJ_SUCCESS
AS OBJECT
(
   BRANCH_CODE     VARCHAR2(2),
   TRANS_NO        VARCHAR2(11),
   TRANS_CODE      VARCHAR2(3),
   TRANS_DATE      DATE,
   TRANS_EXCHANGE_RATE NUMBER(17,2)
)

My Procedure is as follows

Code: Select all

 PROCEDURE LOCALPAY_5003(INPUT_OBJ IN WESTCORE.OBJ_LOCALPAY_5003, OUTPUT_OBJ OUT WESTCORE.OBJ_SUCCESS);

Re: .Net Core - dotConnect For Oracle Type Cast Error

Posted: Tue 10 Apr 2018 18:02
by Shalex
We have asked for the additional information by email.