Hi,
I'm using Oracle 11g. I'm trying to have an if then else statement in the select clause of linq-to-sql connecting to Oracle database.
Database Table:
CREATE TABLE "ISSUE_TRANSACTION"
( "ISSUE_ID" NUMBER(15,0) NOT NULL ENABLE,
"ISSUE_TRANSACTION_ID" NUMBER(15,0) NOT NULL ENABLE,
"INVENTORY_ID" NUMBER(15,0) NOT NULL ENABLE,
"REQ_EMPLOYEE_NUM" VARCHAR2(6 BYTE) NOT NULL ENABLE,
"REQ_SUPERVISOR_EMP_NUM" VARCHAR2(6 BYTE) NOT NULL ENABLE,
"ISSUE_TO_TYPE" VARCHAR2(3 BYTE) NOT NULL ENABLE,
"ISSUE_TO_ID" VARCHAR2(10 BYTE) NOT NULL ENABLE,
"REASON_CODE" VARCHAR2(6 BYTE),
"QUANTITY" NUMBER(9,0) NOT NULL ENABLE,
"ISSUE_DATE" DATE NOT NULL ENABLE,
"CREATED_BY" VARCHAR2(6 BYTE) NOT NULL ENABLE,
"CREATED_DT" TIMESTAMP (6) NOT NULL ENABLE,
"INACTIVE_BY" VARCHAR2(6 BYTE),
"INACTIVE_DT" TIMESTAMP (6))
Model
public class IssuedItemsByTransactionId
{
public long IssueId { get; set; }
public long IssueTransactionId { get; set; }
public string MaterialCode { get; set; }
public string PropertyId { get; set; }
public string MaterialDescription { get; set; }
public string IssueType { get; set; }
public string AssignToType { get; set; }
public string AssignedToVeh { get; set; }
public EmployeeViewModel AssignedToEmployee{ get; set; }
public ddlItems AssignedToFacility { get; set; }
public ddlItems AssignedToJob { get; set; }
public string IssueReason { get; set; }
public int Quantity{ get; set; }
}
SQL
List<IssuedItemsByTransactionId> list = (from it in dbViews.IssueTransaction
join i in dbViews.Inventory on it.InventoryId equals i.InventoryId
join m in dbViews.Material on i.MaterialCode equals m.MaterialCode
where it.IssueTransactionId == alTransactionId
select new IssuedItemsByTransactionId
{
IssueId = it.IssueId,
IssueTransactionId = it.IssueTransactionId,
MaterialCode = m.MaterialCode,
PropertyId = i.PropertyId,
MaterialDescription = m.MaterialDescription,
IssueType = null
AssignToType = it.IssueToType,
AssignedToVeh = (it.IssueToType.Equals("VEH")) ? it.IssueToId : "",
AssignedToFacility = null,
AssignedToJob = null,
IssueReason = it.ReasonCode,
Quantity = it.Quantity
}).ToList();
Code is having an error in the line AssignedToVeh = (it.IssueToType.Equals(AssignToType.VEH.ToString())) ? it.IssueToId : "".
If I remove the (it.IssueToType.Equals("VEH")) and just change the line to AssignedToVeh = it.IssueToId, code works fine.
Error:
OracleException: ORA-12704: character set mismatch
OracleInternal.ServiceObjects.OracleConnectionImpl.VerifyExecution(out int cursorId, bool bThrowArrayBindRelatedErrors, SqlStatementType sqlStatementType, int arrayBindCount, ref OracleException exceptionForArrayBindDML, out bool hasMoreRowsInDB, bool bFirstIterationDone)
OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteReader(string commandText, OracleParameterCollection paramColl, CommandType commandType, OracleConnectionImpl connectionImpl, ref OracleDataReaderImpl rdrImpl, int longFetchSize, long clientInitialLOBFS,
OracleDependencyImpl orclDependencyImpl, long[] scnForExecution, out long[] scnFromExecution, out OracleParameterCollection bindByPositionParamColl, ref bool bBindParamPresent, ref long internalInitialLOBFS, out OracleException exceptionForArrayBindDML, OracleConnection
connection, ref OracleLogicalTransaction oracleLogicalTransaction, IEnumerable<OracleLpStatement> adrianParsedStmt, bool isDescribeOnly, bool isFromEF)
Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteReader(bool requery, bool fillRequest, CommandBehavior behavior)
Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory+OracleRelationalCommandBuilder+OracleRelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary<string, object> parameterValues)
Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary<string, object> parameterValues)
Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable<T>+Enumerator.BufferlessMoveNext(DbContext _, bool buffer)
Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute<TState, TResult>(TState state, Func<DbContext, TState, TResult> operation, Func<DbContext, TState, ExecutionResult<TResult>> verifySucceeded)
Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable<T>+Enumerator.MoveNext()
Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider+ExceptionInterceptor<T>+EnumeratorExceptionInterceptor.MoveNext()
System.Collections.Generic.List<T>.AddEnumerable(IEnumerable<T> enumerable)
System.Linq.Enumerable.ToList<TSource>(IEnumerable<TSource> source)
ToolsOracle.Business.Repository.IssueRepository.searchByTransactionId(long alTransactionId) in IssueRepository.cs
+
257. List<IssuedItemsByTransactionId> list = (from it in dbViews.IssueTransaction
ToolsOracle.Business.Service.IssueService.searchByTransactionId(long lTransactionId) in IssueService.cs
+
83. return _issueRepository.searchByTransactionId(lTransactionId); //, Boolean bMode
ToolsOracle.Controllers.IssueController.GetAllTransactions(long TransactionId) in IssueController.cs
+
119. List<IssuedItemsByTransactionId> list = _issueService.searchByTransactionId(TransactionId);//, Boolean bMode
ToolsOracle.Controllers.IssueController.NewCreate(IssueTransactionDTO issueDTO) in IssueController.cs
+
257. GetAllTransactions(issueDTO.IssueTransactionId.Value);
lambda_method(Closure , object , object[] )
Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(object target, object[] parameters)
Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor+SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
Please advise.
Thanks,
tinac99