Как сравнить NUMBER с «TYPE IS TABLE OF NUMBER»? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть запрос, где нужно выбрать ID и name по ID.Сначала я проверяю ID, используя функцию.В функции я получаю несколько значений, которые нужно сравнить с ID.Когда я делаю проверку, выдает ошибку: ORA-00932: inconsistent datatypes: expected NUMBER got ARRAY

Этот запрос:

select o.id, o.name as value from table1 o, table2 r
where r.id IN (pkg.GET_VALUE(null, 1)) --error in this line
and r.id = o.id

Тип, который я использую для сохранения значений из функции:

 TYPE "ARRAY" as table of number(10)

Как правильно сравнить NUMBER и TYPE ARRAY?

Ответы [ 2 ]

4 голосов
/ 04 апреля 2019

Используйте оператор MEMBER OF:

select o.id, o.name as value
from   table1 o
       INNER JOIN table2 r
       ON ( r.id = o.id )
where r.id MEMBER OF pkg.get_value( null, 1 )

(Вы также можете использовать INNER JOIN вместо использования унаследованного синтаксиса с запятой Oracle)

1 голос
/ 03 апреля 2019

Если функция возвращает таблицу , посмотрите, поможет ли это:

select ...
from ...
where r.id in (select * From table(pkg.get_value(null, 1)))    --> this
and r.id = o.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...