Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Использование базовых переменных, понятие курсора




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

EXEC SQL BEGIN DECLARE SECTION ;

DCL SQLSTATE CHAR(5) ;

DCL P# CHAR(6) ;

DCL WEIGHT FIXED DECIMAL(3) ;

EXEC SQL END DECLARE SECTION ;

P# = ‘P2’ ; /* например */

EXEC SQL SELECT P.WEIGHT

INTO :WEIGHT

FROM P

WHERE P.P# = :P# ;

IF SQLSTATE = ‘00000’

THEN … ; /* WEIGHT (ВЕС) = выбираемому значению */

ELSE … ; /* возникла какая-то исключительная ситуация */

1. Операторы встроенного SQL предваряются инструкцией EXEC SQL, так что их легко отличить от других операторов базового языка, и заканчиваются специальным завершающим символом («;» для PL/1).

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

3. Операторы SQL могут включать ссылки на базовые переменные такие ссылки должны включать префикс в виде двоеточия для отличия их от имен столбцов SQL. Базовые переменные могут использоваться во встроенном SQL везде, где могут использоваться литералы в интерактивном языке SQL. Они могут также находиться в инструкции INTO операторов SELECT и FETCH, обозначая результирующие переменные для выборки, и в определенных операторах динамического SQL.

4. Назначение инструкции INTO оператора SELECT – указать результирующие (целевые) переменные, в которые будут возвращены выбранные значения.

5. Все базовые переменные, на которые будут ссылаться операторы SQL, должны быть определены в разделе описаний встроенного SQL, который ограничивается операторами BEGIN и END раздела описаний (DECLARE SECTION).

6. Каждая программа встроенного SQL должна включать базовую переменную, называемую SQLSTATE. После выполнения какого-либо оператора SQL в такую переменную в программе возвращается код состояния; в частности, код состояния 00000 означает, что оператор выполнился успешно, а значение 02000 – что оператор выполнился, но никаких данных, удовлетворяющих запрос, не было найдено. Таким образом, каждый оператор SQL в программе должен завершаться проверкой переменной SQLSTATE, а соответствующие действия должны предприниматься, если значение не то, которое ожидалось.

7. Базовые переменные должны иметь подходящие типы данных в соответствии с тем, как эти переменные используются.

8. Базовые переменные для столбцов SQL должны иметь те же имена.

9. Как уже упоминалось, каждое выражение SQL в принципе должно сопровождаться проверкой возвращаемого значения SQLSTATE. Оператор WHENEVER предназначен для упрощения этого процесса и имеет следующий синтаксис:

EXEC SQL WHENEVER условие действие завершающий_символ

Условие может принимать значение SQLERROR (ошибка SQL) или NOT FOUND (не найдено – SQLSTATE =02000), а действие – это либо оператор CONTINUE (продолжить), либо оператор GO TO (перейти к). Оператор WHENEVER не является выполняемым, это просто директива для процессора языка SQL. Наличие в программе выражения «WHENEVER уловие GO TO метка» приведет к тому, что процессор вставит оператор “IF условие GO TO метка” после каждого встретившегося ему выполняемого оператора SQL, а вот по выражению “WHENEVER условие CONTINUE” процессор не вставляет никаких операторов.

операторы выборки имеют специальную трактовку. Проблема состоит в том, что такие операторы выбирают в общем случае не одну строку, в то время как базовые языки не приспособлены для обработки выборки более одной строки за один раз. Таким образом, необходим мостик между уровнем выборки «множества за один раз» к уровню выборки «строки за один раз», что обеспечивается курсором. Курсор – это новый вид объекта SQL, который применяется только во встроенном SQL. Он представляет собой такой вид указателя, который может быть использован для перемещения по набору строк, указывая поочередно на каждую из них и таким образом обеспечивая возможность адресации к этим строкам – к одной за один раз.


Поделиться:

Дата добавления: 2015-04-18; просмотров: 75; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты