Динамический SQL

Обычно при разработке программ все используемые в них SQL-операторы явно за-
писываются в исходном коде. Такой вариант использования SQL-операторов обычно на-
зывают статический SQL. Многие полезные программы, однако, до момента запуска не
«знают», какие именно SQL-операторы будут выполняться. Именно так и появляется ди-
намический SQL — программа при запуске выполняет SQL-операторы, неизвестные во
время компиляции. Возможно, программа генерирует запросы по ходу работы на осно-
ве введенных пользователем условий; возможно, это специализированная программа заг-
рузки данных. Утилита SQL*Plus — прекрасный пример такого рода программы, как и
любое другое средство выполнения произвольных запросов или генерации отчетов. Ути-
лита SQL*Plus позволяет выполнить любой SQL-оператор и показать результаты его вы-
полнения* хотя при ее компиляции операторы, которые выполняет пользователь, опре-
деленно не были известны.
В этом разделе мы обсудим, когда возникает необходимость использовать динамичес-
кий SQL в программах и когда его имеет смысл применять. Мы сосредоточимся на ис-
пользовании динамического SQL в программах на языке PL/SQL, поскольку именно в
этой среде большинство разработчиков и используют динамический SQL в предвари-
тельно компилируемом формате. Поскольку использование динамического SQL — един-
ственный способ выполнить SQL-операторы в программах на языке Java через интер-
фейс JDBC (выполнить динамический SQL в среде прекомпилятора SQLJ можно только
через интерфейс JDBC) и на языке С при использовании библиотеки OCI, не имеет
смысла обсуждать эти среды в данном контексте. В этих средах есть только динамичес-
кий SQL; статический SQL вообще не поддерживается, так что там просто нет выбора.
Встроенный динамический SQL появился в Oracle 8.1.5
и является одной из важнейших возможностей всех последующих версий.