Використання множин при роботі з динамічним SQL
Робота зі складними типами даних BULK - масивами і колекціями підвищує продуктивність за рахунок мінімізації кількості перемикань контексту між PL / SQL і SQL. Тобто цілі колекції, а не тільки окремі елементи, передаються туди і назад.
За допомогою наступних команд, і атрибутів курсорів, можна побудувати динамічний SQL таким чином, щоб коректно здійснювалася робота з масивами і колекціям.
Синтаксис для динамічного зв'язування з використанням інструкції BULK
Інструкція BULK дозволяє Oracle працювати змінної в SQL. так. щоб обробляти безлічі значень. Тип безлічі може бути будь-який допустимі в PL / SQL (індекс-таблиці, вкладені таблиці, і масиви змінного розміру). Однак елементи повинні мати строго заданий тип даних SQL, CHAR. DATE або NUMBER. Динамічні колекції можуть застосовуватися в командах: EXECUTE IMMEDIATE. FETCH і FORALL.
EXECUTE IMMEDIATE і BULK
Ці оператори дозволяє вам дозволяє пов'язувати задані змінні або OUT аргументи і передавати їх, як параметри, для динамічного оператора SQL. Синтаксис має наступний вигляд:
Завдяки інструкції BULK можна повертати дані в колекції з динамічного SQL.
BULK і FETCH
BULK дозволяє залишити дані з динамічного курсора так само, як вибірку з статичного курсора. Синтаксис має наступний вигляд:
Якщо число визначених змінних в BULK COLLECT INTO. перевищує кількість стовпців в запиті, Oracle видає помилку.
Цей синтаксис дозволяє зв'язати вхідні змінні в динамічному SQL. Крім того, ви можете використовувати EXECUTE
Динамічна рядок може бути або INSERT. UPDATE або DELETE (але не SELECT).
Приклади динамічного SQL з використанням BULK
Наступний приклад демонструє використання BULK для виведення даних у відкриті масиви за допомогою FETCH
Використання BULK масовому оновленні записів спільно з returning результат поміщається в колекцію enames.
Приклад показує як використовувати FORALL і USING.