Коллекция Bind как правая часть слова "где col?" пункт - PullRequest
1 голос
/ 08 мая 2009

В Oracle OCI я могу подготовить заявление как:

select * from t where pk in :1

и связать коллекцию VArray для заполнителя: 1.

Я не вижу способа сделать эквивалент в SQLite, если я не использую одно из следующих решений:

  • 1010 * подготовить *

    выберите * из т, где рк =: 1

    вместо этого и выполните это N раз со всеми pks в моей коллекции, и вручную выполните "объединение" строк из N запросов

  • поместите мою коллекцию pk во временную таблицу и выполните соединение с t на ней.

  • текстуально заменить: 1 значениями сбора, сводя на нет преимущества подготовленных заявлений.

Я что-то упустил? И каков будет рекомендуемый способ эмулировать привязку коллекции OCI? Спасибо, --DD

1 Ответ

3 голосов
/ 10 мая 2009

Увы, sqlite поддерживает только привязку к скалярам, ​​поэтому вы правы, что не можете привязать параметр к коллекции. Если количество элементов в сборщике ограничено, вы можете подготовить оператор с помощью 'IN (?, ?, ?, ?)' [[при условии, что максимум четыре элемента]], а затем связать фактические скаляры в массиве (если меньше 4, повторно связать последний или связать значение, которое, как вы знаете, «невозможно» в качестве заполнителя); в противном случае, наброски, которые вы наметили, действительно более или менее все, что приходит на ум.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...