It's reproducible with just 1 ?:.
Cause is that all 'then' elements have to have the same type in a case structure. (ref: https://stackoverflow.com/a/49111721 )
The problem here is that the NULL is a string typed parameter. So my test query:
SELECT CASE
WHEN CASE
WHEN ("LPLA_1"."DEPTNO" = :p1) THEN 1
ELSE 0
END = 1 THEN :p3
ELSE "LPLA_1"."HIREDATE"
END AS "ShippedDateDerived",
"LPLA_1"."JOB" AS "Job"
FROM "SCOTT"."EMP" "LPLA_1"
where p3 is NULL. However its type is 'String' (varchar2). SQL Server doesn't care, Oracle apparently does. I have to check, but my guess is that because it's NULL, we can't determine the type on the fly for the parameter based on the value, and therefore it picks the default. (it's NULL after all... ).
This works fine in all other cases, but in this particular case it has to have the same type as the rest of the 'then' clauses. As the second one is a DATE, you get the error there, because the first one is a char type (the parameter) and the second one therefore has to be as well...
We'll see what we can do about this.