Читаем SQL за 24 часа полностью

Синтаксис оператора для открытия курсора в Oracle следующий.

OPEN ИМЯ_КУРСОРА [ ПАРАМЕТР1 [, ПАРАМЕТР2 ]]

Например, следующий оператор открывает курсор EMP_CURSOR: OPEN EMP_CURSOR

Доступ к данным курсора

После того как курсор будет открыт, его содержимое (т. е. результат выполнения его запроса) можно прочитать с помощью оператора FETCH.

Синтаксис оператора FETCH в Microsoft SQL Server следующий.

FETCH ИМЯ_КУРСОРА [ INTO СПИСОК_ПОЛУЧАТЕЛЬ ]

Синтаксис оператора в Oracle следующий.

FETCH CURSOR ИМЯ_КУРСОРА {INTO : ГЛАВНАЯ_ПЕРЕМЕННАЯ }

[[ INDICATOR ] : ПЕРЕМЕННАЯ_ИНДИКАТОР ]]

[, : ГЛАВНАЯ_ПЕРЕМЕННАЯ

[[ INDICATOR ] : ПЕРЕМЕННАЯ_ИНДИКАТОР ]]

I USING DESCRIPTOR ДЕСКРИПТОР ]

Синтаксис оператора в dBase следующий.

FETCH ИМЯ_КУРСОРА INTO ПЕРЕМЕННЫЕ_ПАМЯТИ

Например, чтобы извлечь содержимое курсора EMP_CURSOR и поместить в переменную с именем EMP_RECORD, можно использовать оператор FETCH следующего вида.

FETCH EMP_CURSOR INTO EMP_RECORD

Закрытие курсора

Очевидно, если имеется возможность открыть курсор, должна быть предусмотрена и возможность закрыть его. Закрыть курсор несложно, только следует помнить, что после закрытия курсор становится недоступным для программ пользователей.

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

В Microsoft SQL Server синтаксис операторов закрытия курсора и освобождения занимаемой курсором памяти будет следующим.

CLOSE ИМЯ_КУРСОРА

DEALLOCATE CURSOR ИМЯ_КУРСОРА

При закрытии курсора в Oracle занимаемые им ресурсы освобождаются автоматически без использования оператора DEALLOCATE. Синтаксис оператора закрытия курсора в Oracle следующий.

CLOSE ИМЯ_КУРСОРА

Для освобождения ресурсов в dBase объект должен быть закрыт и открыт вновь. Тогда ресурсы окажутся свободными, а имена - вновь доступными для использования. Синтаксис оператора закрытия курсора в dBase следующий.

CLOSE ИМЯ_КУРСОРА

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

Сохраненные процедуры и функции

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

Возможность сохранять процедуры - основа процедурного программирования. Команды SQL (CREATE TABLE, INSERT, UPDATE, SELECT'и т.д.) дают вам возможность сообщить базе данных, что делать, но не как делать. Посредством составления процедур вы получаете возможность сообщить ядру базы данных, каким образом следует обрабатывать данные.

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

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

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

В Microsoft SQL Server процедуры создаются с помощью оператора следующего вида.

CREATE PROCEDURE ИМЯ_ПРОЦЕДУРЫ

[ [ (] @ИМЯ_ПАРАМЕТРА

ТИП_ДАННЫХ [(ДЛИНА) | (ТОЧНОСТЬ] [, МАСШТАБ ])

[ = DEFAULT ][ OUTPUT ]]

[, @ ИМЯ_ПАРАМЕТРА

ТИП_ДАННЫХ [(ДЛИНА) | (ТОЧНОСТЬ] [, МАСШТАБ ])

[ = DEFAULT ][ OUTPUT ]] [)]]

[ WITH RECOMPILE ]

AS ОПЕРАТОРЫ_SQL

В Oracle синтаксис оператора следующий.

CREATE [ OR REPLACE ] PROCEDURE ИМЯ__ПРОЦЕДУРЫ

[ (АРГУМЕНТ [{IN | OUT | IN OUT) ] ТИП,

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных