Проблема в вашем запросе REPLACE(:SUBTYPE, '''', '"')
. Почему вы заменяете одинарную кавычку на двойную?
Значения в Oracle всегда заключаются в одинарные кавычки, например:
F.SUBTYPE IN ('val1','val2','val3',.....)
Так что я думаю, что это единственная проблема в вашем запросе.
Для нескольких входные параметры, разделенные запятыми, вы можете использовать Hierarchical query
следующим образом (повторяя ваш запрос, чтобы предоставить вам фактический запрос):
SELECT
*
FROM
FIN.FINANCIAL_TRANSACTION F
WHERE
TO_DATE(F.CREATE_DATETIME) BETWEEN TO_DATE(:STARTDATE, 'YYYY-MM-DD')
AND TO_DATE(:ENDDATE, 'YYYY-MM-DD')
-- changes after this line (IN clause)
AND F.SUBTYPE IN (
SELECT DISTINCT
TRIM(REGEXP_SUBSTR(:SUBTYPE, '[^,]+', 1, LEVEL)) VALUE
FROM
DUAL
CONNECT BY
REGEXP_SUBSTR(:SUBTYPE, '[^,]+', 1, LEVEL) IS NOT NULL
);
Это будет поддерживать как одно, так и несколько значений (через запятую) .
Ура !!