С моей стороны, я могу предположить, но это может быть связано с тем, что ваш клиентский компьютер не кодирует строку sql с аргументом, записанным в него правильно. Я думаю, что если ваш клиент настроен на региональные настройки, отличные от параметров сортировки БД, массив символов, содержащий оператор select, который отправляется в Oracle, будет содержать «неправильные» байты, в которых расположены оригинальные символы funky - Oracle будет интерпретировать их как некоторые символ, отличный от того, который вы отправили изначально (в результате чего строка не будет найдена).
Есть ли причина, по которой вы не можете просто использовать параметризованный подход (поскольку он работает правильно)?