Я использую этот запрос с Perl DBI:Почему я получаю «ORA-00932: непоследовательные типы данных: ожидается - получил -» при использовании COLLECT() в подготовленном заявлении?
SELECT c.change_id
, COLLECT(t.tag) AS the_tags
FROM changes c
LEFT JOIN tags t ON c.change_id = t.change_id
WHERE c.project = ?
GROUP BY c.change_id
DBI использует OCI подготовить это заявление, связать значение я прохожу, и получить результаты. Но Oracle почему-то не нравится. Выход ошибки:
ORA-00932: inconsistent datatypes: expected - got - (DBD ERROR: error possibly near <*> indicator at char 41 in '
SELECT c.change_id
, <*>COLLECT(t.tag) AS the_tags
FROM changes c
LEFT JOIN tags t ON c.change_id = t.change_id
WHERE c.project = :p1
GROUP BY c.change_id
'
Не очень информативный. Тем не менее, я могу сделать эту ошибку уйти не только путем изменения вызов COLLECT()
также путем замены заполнителя с фактическим значением:
SELECT c.change_id
, COLLECT(t.tag) AS the_tags
FROM changes c
LEFT JOIN tags t ON c.change_id = t.change_id
WHERE c.project = 'tryoracle'
GROUP BY c.change_id
Эта версия работает отлично. Почему Oracle не похож на подготовленный оператор с COLLECT()
?
В случае его помощи here is a trace of the OCI-related calls извлечен через ora_verbose = 6
(h/t @bohica).
теория, DBD :: Oracle ora_verbose = 6 может быть более информативным. – bohica
Выполнено, хотя теперь оно работает. Попытка заставить его снова потерпеть неудачу. Будет обновлено это значение ... – theory
Там мы идем. Пришлось перезапустить Oracle VM. Без разницы. – theory