РЕДАКТИРОВАТЬ: изменил заголовок, чтобы он соответствовал приведенному ниже коду.
Я пытаюсь получить список допустимых значений из таблицы Oracle, а затем выполнить SELECT для другого, сравнивая некоторые поля с указанным списком.
Я пытался сделать это с помощью курсоров (как показано ниже), но это не удалось.
DECLARE
TYPE gcur IS REF CURSOR;
TYPE list_record IS TABLE OF my_table.my_field%TYPE;
c_GENERIC gcur;
c_LIST list_record;
BEGIN
OPEN c_GENERIC FOR
SELECT my_field FROM my_table
WHERE some_field = some_value;
FETCH c_GENERIC BULK COLLECT INTO c_LIST;
-- try to check against list
SELECT * FROM some_other_table
WHERE some_critical_field IN c_LIST;
END
По сути, то, что я пытаюсь сделать, это кэшировать список допустимых значений в переменной, потому что позже я буду неоднократно проверять его.
Как вы выполняете это в Oracle?