Динамічний sql в програмах на pl

Стів Бобровськи

Динамічний SQL в програмах на PL / SQL.
Використання пакета DBMS_SQL.

(Dynamic SQL Comes to PL / SQL. Using the DBMS_SQL Package, by Steve Bobrowski. ORACLE MAGAZINE, vol.IX / num.2)

Я хотів би присвятити цю статтю пам'яті Роберта Куї (Robert Kooi), мого друга і блискучого розробника, який вніс значний вклад в розвиток сервера Oracle7, особливо в частині PL / SQL.

Адміністратори і розробники часто нехтують тими перевагами, які можна отримати від застосування деяких видатних, але прихованих дорогоцінних можливостей, якими володіє сервер Oracle7. Я перш за все маю на увазі пакети утиліт DBMS, які дозволяють розробникам додатків застосовувати розширені засоби сервера бази даних, такі як сигнали (alerts), комунікаційні канали (communication pipes) і керовані сервером блокування ресурсів (server-managed resource locking). У Oracle7 версії 7.1 є воістину фантастичне додавання до сімейства пакетів DBMS: новий пакет DBMS_SQL забезпечує розробників інструментарієм для створення динамічно формованих пропозицій SQL в програмах на PL / SQL.

Статичні і динамічні пропозиції SQL

Багато хто з сучасних додатків Oracle на комп'ютерах-клієнтах містять тільки статичні SQL-пропозиції. За цим сценарієм розробник конструює деякий додаток за допомогою планування можливих транзакцій і подальшого включення в додаток відповідних SQL-пропозицій (*). Отже, додаток обмежена деякою кількістю чітко визначених звернень до бази даних, які фактично компілюються як частина програми.

Цей метод використання статичних SQL-пропозицій може бути добрим чи поганим в залежності від того, що Ви хочете від програми. Для прикладу, механізм статичних SQL-пропозицій бездоганний, коли Ви хочете сконструювати додаток, яке жорстко контролює, що користувачі можуть або не можуть робити. Оскільки Ви вбудовуєте всі можливі SQL-пропозиції в цей додаток, користувачі не можуть збитися з призначеного їм шляху. Але коли Ви хочете розробити додаток, яке мало б гнучкістю, що забезпечує управління непередбачуваними транзакціями, SQL-пропозиції або навіть набори SQL-пропозицій (маючи на увазі статичні SQL-пропозиції і їх характерологічні особливості), не можуть допомогти Вам. Таким чином, виникає потреба в динамічно сформованих SQL-пропозиції.

Використовуючи метод динамічно сформованих SQL-пропозицій, додатки будують їх під час виконання (runtine), і в цьому сенсі Ви можете створювати додатки, які змінюються за вибором, який визначається користувачем. Як загальнодоступного інтерфейсу до динамічно формується SQL-пропозицій можна уявити собі, наприклад, інструментарій типу SQL * Plus, за допомогою якого користувачі можуть працювати з SQL-пропозиціями будь-якого типу.

Введення в динамічно формуються SQL-пропозиції

Основним положенням в розумінні використання динамічних SQL-пропозицій є те, що якщо деякий SQL-пропозиція є динамічно формується, то програма повинна побудувати правильне SQL-пропозиція, виконуючи послідовність певних кроків, які формують цю пропозицію; виконати його, а в разі, якщо це SQL-пропозиція являє собою запит до бази даних [запитними і незапросние пропозиції - див. таблицю 1. Прим. перекладача], а також визначити його колонки і вибірку рядків, що повертається набору. Тип вибірки і число кроків, необхідну для виконання динамічних SQL-пропозицій, змінюється в залежності від типу SQL-пропозиції, що і змушує програму певним чином визначати і виконувати ці пропозиції. Різні можливості виділили чотири формальних методу формування динамічних SQL-пропозицій. Таблиця 1 коротко викладає деякі особливості кожного методу. В останній колонці таблиці 1 наводяться послідовності списків викликів підпрограм пакета DBMS_SQL, які програма на PL / SQL повинна виконати, щоб реалізувати динамічно формуються SQL-пропозиції кожного типу.

Необхідні виклики пакета DBMS_SQL

Схожі статті