У меня проблема с использованием Oracle SQL для циклического завершения набора результатов дважды.Сохранение набора результатов в переменной с помощью курсора
Проблема
У меня есть курсор, который получает мне все внешние ключи к заданному имени таблицы. Используя результат, создайте этот курсор, я пройду через все ограничения и отключу их. Затем я выполняю импорт данных, а затем мне нужно перебрать один и тот же набор результатов и включить их.
CURSOR c_fkeys_inn(tabellnavn IN VARCHAR2)
IS
SELECT table_name,constraint_name, status
FROM user_constraints
WHERE (r_constraint_name,r_owner) IN
(SELECT constraint_name, owner
FROM user_constraints
WHERE owner ='POP'
AND table_name=upper(tabellnavn)
)
AND STATUS = 'ENABLED';
То, что я хотел бы сделать
Мой мозг переходит непосредственно к переменной. Я хотел бы выполнить курсор только один раз, а затем сохранить результат от курсора к переменной.
Возможно ли это или есть что-нибудь, что я делаю, чтобы сохранить результат от курсора и цикла дважды?
Да. Это прекрасно работает. Не возражаете ли вы объяснить, как вы создаете переменную? – Stene
Вам необходимо создать тип таблицы, соответствующий указанному выше курсору. После того, как вы создадите тип u, вам нужно сохранить все записи курсора в тип за один проход, который может быть достигнут с помощью Bulk collect. Массовый сбор извлекает все строки и загружает их в коллекцию и переключается обратно в механизм PL/SQL. После того, как все строки будут сохранены, мы можем использовать концепцию цикла для перемещения по типу и отображению или выполнять необходимые операции. Извините за поздний ответ (из-за нехватки времени :)) –