Без контекста нам трудно быть уверенным.Но я в угадывающем настроении, так что вот так:
base.fid
- это числовой столбец.В :db_condition_placeholder_0
вы пытаетесь передать строку токенов, таких как "23, 42, 69"
.
Теперь вы надеетесь, что движок SQL объединит это вместе, чтобы создать такую строку:
where base.fid in (23, 42, 69)
Увы, на самом деле это генерируется так:
where base.fid in ('23, 42, 69')
... что логически совпадает с:
where base.fid = to_number('23, 42, 69')
Очевидно, что строка не являетсядействительное число и, следовательно, ORA-1722.
Теперь, что вы делаете с этим, является сложным вопросом.Существует несколько различных подходов, включая вложенные таблицы или массивы, конвейерные функции и динамический SQL.Какой из них подойдет вам лучше всего, зависит от деталей вашего требования.
Плюс, конечно, я все равно догадываюсь о вашей проблеме: -)