3.1. Оператор подготовки

Оператор PREPARE имеет синтаксис:

<prepare-statement> ::=

PREPARE <statement-name> FROM <host-string-variable>

<statement-name> ::= <name>

Во время выполнения оператора PREPARE символьная строка, содержащаяся в host-string-variable, передается компилятору SQL, который обрабатывает ее почти таким же образом, как если бы получил в статике. Построенный при выполнении оператора PREPARE код остается действующим до конца транзакции или до повторного выполнения данного оператора PREPARE в пределах этой же транзакции.

В отличие от статически подставляемых в программу на обычном языке программирования операторов SQL, в которых связь с переменными включающей программы производится по именам (т.е. в соответствии со стандартом во встроенном операторе SQL могут употребляться просто имена переменных включающей программы), динамическая природа операторов, подготавливаемых с помощью оператора PREPARE, заставляет рассматривать эти имена как имена формальных параметров. Соответствие этих формальных параметров адресам переменных включающей программы устанавливается позиционно во время выполнения подготовленного оператора.

3.2. Оператор получения описания подготовленного оператора

Оператор DESCRIBE предназначен для того, чтобы определить тип ранее подготовленного оператора, узнать количество и типы формальных параметров (если они есть) и количество и типы столбцов результирующей таблицы, если подготовленный оператор является оператором выборки (SELECT).

Действие оператора DESСRIBE состоит в том, что в указанную область памяти прикладной программы (структура этой области фиксирована и известна пользователям) помещается информация, характеризующая ранее подготовленный оператор с заданным именем.

3.3. Оператор выполнения подготовленного оператора

Оператор EXECUTE служит для выполнения ранее подготовленного оператора SQL типа 'N' (не требующего применения курсора) или для совмещенной подготовки и выполнения такого оператора. Синтаксис оператора EXECUTE:

<execute-statement> ::=

EXECUTE

 {<statement-name> [USING <host-vars-list>]

 ( IMMEDIATE <host-string-variable> }

Для выполнения подготовленного оператора служит первый вариант оператора EXECUTE. В этом случае <statement-name> должен задавать имя, употреблявшееся ранее в операторе PREPARE. Если в подготовленном операторе присутствуют формальные параметры, то в операторе EXECUTE должен задаваться список фактических параметров <host-vars-list>. Число и типы фактических параметров должны соответствовать числу и типам формальных параметров подготовленного оператора.

Второй вариант оператора EXECUTE предназначен в Oracle для совмещенной подготовки и выполнения оператора SQL типа 'N'. В этом случае параметром оператора EXECUTE является строка, которая должна содержать текст оператора SQL (эту строку разрешается также задавать литерально). Запрещается использование в этом операторе переменных включающей программы (формальных параметров).

3.4. Работа с динамическими операторами SQL через курсоры

Для использования таких операторов используется расширение механизма курсоров стандарта SQL. Во-первых, при определении курсора можно указывать не только литеральную спецификацию курсора, но и имя оператора, вводимое с помощью оператора PREPARE (в этом случае оператор PREPARE должен текстуально находиться выше оператора DECLARE). Тем самым полный синтаксис оператора DECLARE становится следующим:

<declare cursor> ::=

DECLARE <cursor name> CURSOR

FOR { <cursor specification> | <statement-name> }

Далее, поскольку для такого курсора в статике неизвестна информация о входных и выходных переменных включающей программы, то используется другая форма операторов OPEN и FETCH.

Полный синтаксис этих операторов становится следующим:

<open statement> ::=

OPEN <cursor name>

[USING { <host-vars-list> | DESCRIPTOR <descr-name> }]

<fetch statement> ::=

FETCH <cursor name>

 { INTO <fetch target list>

 ( USING <host-vars-list>

 ( USING DESCRIPTOR <descr-name> }

Как видно, предлагается два способа задания фактических входных и выходных параметров: прямое с указанием в операторах OPEN и/или FETCH списков имен переменных включающей программы и косвенное, когда число параметров и их адреса сообщаются через дополнительную структуру-дескриптор.

Первый способ предлагается использовать для работы с операторами выборки, для которых фиксирован набор формальных входных и выходных параметров. Точнее говоря, что касается выходных параметров, должны быть фиксированы число и типы элементов списка выборки.

Второй способ работы с динамически откомпилированными операторами, требующими использования курсоров, состоит в использовании дескрипторов динамически формируемых списков параметров. В этом случае вся ответственность за соответствие типов фактических и формальных параметров ложится на программиста. В результате ошибки при формировании такого списка, в частности, может быть испорчена память Си-программы.

Заключение

Будучи стандартным языком доступа к реляционной базе данных, SQL оказывает большое влияние на все сегменты компьютерного рынка. Компания IBM приняла SQL в качестве унифицирующей технологии баз данных для линии своих продуктов. Все поставщики мини-компьютеров предлагают реляционные базы данных; такие базы данных доминируют и на рынке компьютерных систем, работающих под управлением UNIX. По мере того как отдельные персональные компьютеры уступают дорогу сетям с архитектурой клиент/сервер, SQL видоизменяет рынок баз данных для персональных компьютеров. SQL применяется даже при оперативной обработке транзакций, опровергая бытовавшее ранее мнение, что из-за низкого быстродействия реляционные базы данных никогда не смогут использоваться в приложениях для обработки транзакций.

Со временем язык SQL развивается и дополняется новыми возможностями и вместе с этим немного усложняется. Вместе с этим увеличивается число пользователей, которым необходимо облегчить работу с БД.

Благодаря прикладному программированию облегчается работа с БД. Пользователи получают удобный интерфейс управления.

Список литературы

Атре Ш. Структурный подход к организации баз данных. – М.: Финансы и статистика, 1983. – 320 с

Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. – М.: Финансы и статистика, 1989. – 351 с.

Дейт К. Руководство по реляционной СУБД DB2. - М.: Финансы и статистика, 1988. - 320 с.

Джексон Г. Проектирование реляционных баз данных для использования с микроЭВМ. -М.: Мир, 1991. – 252 с.

Кириллов В.В. Структуризованный язык запросов (SQL). – СПб.: ИТМО, 1994. – 80 с.

Кириллов В.В.: Учебное пособие. - СПб.: ИТМО, 1994. - 90 с.

Материалы сайта «Сервер информационных технологий» WEB: www.citforum.ru

Материалы сайта «SQL.ru» WEB: www.SQL.ru

Мейер М. Теория реляционных баз данных. -М.: Мир, 1987. - 608 с.

Хаббард Дж. Автоматизированное проектирование баз данных. – М.: Мир, 1984. – 294


Информация о работе «Использование SQL в прикладном программировании»
Раздел: Информатика, программирование
Количество знаков с пробелами: 28917
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
183471
45
12

... Java, JavaScript и встроенные в сервер средства LiveConnect. Более мощными реляционными возможностями доступа к базе данных и более эффективным выполнением виртуальной Java-машины будут расширены услуги разработки приложений, обеспечиваемых в Enterprise Server 2.0,. Сервис управления. В дополнение к использованию встроенной машины каталога LDAP Enterprise Server 2.0 будет управляем через общие ...

Скачать
46976
0
2

... между ними, заключается в способе формирования запросов: язык QBE предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса. 2. РАЗРАБОТКА ПРИЛОЖЕНИЙ АРХИТЕКТУРЫ КЛИЕНТ-СЕРВЕР ПРИ ПОМОЩИ SQL SQL - это язык манипулирования данными, который работает в одно- или многопользовательской системе. Особенно хорошо SQL работает в ...

Скачать
71998
10
0

... правил, предотвращающих создание операторов SQL, которые выглядят как абсолютно правильные, но не имеют смысла. Несмотря на не совсем точное название, SQL на сегодняшний день является единственным стандартным языком для работы с реляционными базами данных. SQL — это достаточно мощный и в то же время относительно легкий для изучения язык. Роль SQL Сам по себе SQL не является ни системой ...

Скачать
126025
4
0

... между SQL Server и остальной системой на выделенном компьютере. SQL Server использует память в количестве, отведенном ему настраиваемым параметром "memory". Machine Memory, (MB) SQL Server Memory, (MB) 16 24 32 48 64 128 256 512 4 6 16 28 40 100 216 464 Не следует выделять SQL Server слишком много памяти (относительно общего объема памяти ...

0 комментариев


Наверх