Динамичният SQL в програми на ПЗ

Стив Bobrovski

Динамичният SQL в PL / SQL-програми.
С помощта на пакета DBMS_SQL.

(Dynamic SQL въпрос за PL / SQL. Използвайки DBMS_SQL пакет, от Стив Bobrowski. ORACLE MAGAZINE, vol.IX / num.2)

Бих искал да посветя тази статия на паметта на Робърт Куи (Робърт Kooi), моят приятел и блестящ програмист, който има значителен принос в развитието на Oracle7 сървъра, особено в PL / SQL.

Администраторите и разработчиците често пренебрегват ползите, които могат да бъдат получени от използването на някои изключителни, но възможностите за скрито съкровище, които имат Oracle7 сървър. Аз най-вече средните пакети СУБД комунални услуги, които позволяват на разработчиците на приложения да използват съвременни средства за сървъра на базата данни, като например сигнали (сигнали), комуникационни канали (комуникационни тръби) и успя сървъра заключване на ресурси (сървър управлявана заключване на ресурси). В Oracle7 версия 7.1 има наистина фантастично допълнение към семейството на пакети СУБД: нов пакет 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-предложение е искане към базата данни [Искането и nezaprosnye предлага - виж Таблица 1. Забележка .. Преводач] и се определя колона и подбор ред набор резултат. вид проба и редица стъпки, необходими за изпълнение на динамични SQL-предложения варира в зависимост от вида на SQL-предложения, което води прилагането на конкретен начин за идентифициране и прилагане на тези предложения. Различни възможности са идентифицирали четири формален метод за образуване на динамични SQL-предложения. Таблица 1 обобщава някои от характеристиките на всеки метод. Последната колона на Таблица 1 изброява последователността на повиквания дадени DBMS_SQL пакет от подпрограми, че в PL / SQL програма трябва да изпълняват за изпълнение на динамично генерирани SQL-предложения от всеки тип.

Задължително пакет призовава DBMS_SQL