Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

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

Динамический SQLДинамический SQL можно рассматривать как расширение внедренного SQL, преодолевшее существующие ограничения за счет отсрочки всех пяти этапов обработки инструкции SQL до момента реального выполнения программы. Внедренный SQL не позволяет создавать запросы “на лету”, поскольку первые четыре этапа обработки запроса выполняются на стадии компиляции управляющей программы, написанной на процедурном языке. Это значит, что инструкции SQL жестко “зашиты” в программу, позволяя только подставлять значения третьей группы лексем. В динамическом SQL можно формировать инструкции SQL во время выполнения программы, основываясь на передаваемых пользователем параметрах, таких как имена таблиц и столбцов, условия отбора и т. д. Внедренный SQL — это классический пример того, как стандарты де-факто (от компании IBM) постепенно вошли в стандарты SQL:2003. Как уже говорилось, IBM разработала и воплотила в жизнь принципы внедренного SQL в начале 1980-х годов; с тех пор большинство производителей просто следовало этим стандартам с незначительными отклонениями. Данные стандарты были учтены в спецификациях SQL-92, SQL:99 и, наконец, в SQL:2003. В последней поддержка внедренного SQL была описана для языков Ada, C, COBOL, FORTRAN, MUMPS, Pascal и PL/I. Все СУБД “большой тройки”, рассматриваемые в настоящей книге, поддерживают данный стандарт до некоторых пределов, однако в последние годы, когда одна за другой появлялись новые технологии для API, наметилась общая тенденция прекращения поддержки внедренного SQL, а не на его развития. Oracle 11g предлагает предварительные компиляторы для C, C++ и COBOL; DB2 9.5 — для C, C++, COBOL, FORTRAN и REXX (поддержка последних двух будет прекращена); Microsoft SQL Server позволяла использовать только язык C, однако и эта возможность была устранена в версии Microsoft SQL Server 2008 (для ее использования следует установить динамические библиотеки DLL из предыдущих версий).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *