Студопедия — Выборка данных
Студопедия Главная Случайная страница Обратная связь

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

Выборка данных






После открытия курсора пользователь может приступать к выборке или из­менению данных.

Для считывания строки данных из курсора предназначена команда fetch, имеющая следующий синтаксис:

FETCH

[ [ NEXT I PRIOR I FIRST | LAST

| ABSOLUTE {n | @nvar}

| RELATIVE [n | @nvar}

]

FROM

]

{ { [GLOBAL] cursor__name } | @cursor_variable_name}

[INTO @variable_name[,...n] ]

Непосредственно после слова fetch указывается выбираемая строка, кото­рую можно определить, указав либо ее абсолютную, либо относительную позицию. Затем следует ключевое слово from, за которым расположено имя курсора, из которого будут выбираться данные. После ключевого слова into указываются имена переменных, в которые будут помещены значения столбцов выбираемой строки курсора.

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

Рассмотрим более подробно назначение параметр ов команды:

 

next — выполняет переход на следующую строку, располагающуюся в ре­зультирующем наборе непосредственно после текущей. Эта опция при первой выборке данных из курсора делает текущей первую строку резуль­тирующего набора и возвращает данные, хранящиеся в этой строке. Если пользователь не указывает явно, из какой строки будет выполняться вы­борка, то действует опция next, то есть данные будут считываться после­довательно.

 

prior — в отличие от предыдущей опции, с помощью prior выполняется переход на предыдущую строку, из которой и считываются данные.

 

first — переход на самую первую строку результирующего набора кур­сора. Эта строка становится текущей, после чего из нее считываются данные.

 

last — переход на самую последнюю строку результирующего набора курсора. Эта строка становится текущей, после чего из нее считываются данные.

 

absolute — переход на строку с определенным номером (абсолютная ад­ресация). Указанная строка становится текущей, и из нее считываются данные. Номер строки должен изменяться в пределах от 1 и до числа, со­ответствующего количеству строк в курсоре. Номер строки может быть указан двумя способами:

 

n — как константа, определяющая номер строки.

 

@nvar — как имя переменной, указывающей номер строки, на которую нужно перейти.

 

relative {n | @nvar} — в отличие от предыдущего параметра, устанавли­вающего текущую строку с указанным абсолютным номером, параметр relative позволяет делать текущей строку, расположенную на указанное число строк после или до текущей строки (относительная адресация). Подобно предыдущему параметру, смещение может указываться как с помощью константы, так и с помощью переменной. При этом смещение может быть как положительным, так и отрицательным. Положительное значение перемещает указатель текущей строки на указанное количество строк к концу результирующего набора, а отрицательное — к началу ре­зультирующего набора. Если смещение равно 0, указатель не смещается и повторно считывается текущая строка.

 

global — этот параметр необходим, если работа ведется с глобальным курсором, и в текущем соединении имеется еще и локальный курсор с таким же именем, что и локальный курсор. Если параметр global не указан, то считывание данных выполняется из локального курсора. Если имя курсора уникально (то есть имеется только один курсор с указанным именем), то параметр global не требуется.

 

cursor_name — имя курсора, из которого выполняется выборка данных. К моменту выборки курсор должен быть уже открыт. В противном случае будет выдано сообщение об ошибке.

 

@cursor_variabie_name — переменная, содержащая имя курсора. Позво­ляет динамически создавать множество курсоров.

 

@variabie_name[,...n] — имена переменных, в которые будут сохранены значения всех столбцов текущей строки курсора. Переменные должны быть предварительно объявлены и иметь тип данных, соответствующий типу данных столбцов курсоров. Возможно использование переменных типа данных, допускающего неявное преобразование типов данных столб­цов курсора. Количество переменных, указанных после ключевого слова into, должно в точности соответствовать количеству столбцов курсора. Причем порядок указания переменных должен соответствовать порядку столбцов курсора.

 

Если в команде fetch не указывается ключевое слово into и, соответственно, не приведен список переменных, в которые будут сохранены значения текущей строки курсора, то команда fetch просто выводит соответствующие значения на экран, подобно команде select.

 

 

Приведем пример выборки данных из динамического курсора:

 

DECLARE curs1 CURSOR LOCAL DYNAMIC SCROLL READ_ONLY FOR SELECT au_id, au_lname, phone FROM authors

WHERE state in ('CA', 'UT') OPEN cursi

 

DECLARE @ID char (11),@LName char(40), @Phone char(12)

 

FETCH FIRST FROM cursl INTO @ID, @LName, @Phone

 

SELECT [ID автора] = @ID, [Телефон] = OPhone, [Фамилия автора] = @LName

FETCH NEXT FROM cursl INTO @ID, @LName, @Phone

SELECT [ID автора] = @ID, [Телефон] = @Phone, [Фамилия автора] = @LName

FETCH NEXT FROM cursl INTO @ID, @LName, @Phone

SELECT [ID автора] = @ID, [Телефон] = @Phone, [Фамилия автора] = @LName

FETCH NEXT FROM cursl

FETCH NEXT FROM curs1

FETCH NEXT FROM cursl

 

Будет возвращен следующий результат:

 

ID автора Телефон Фамилия автора \

172-32-1176 408 496-7223 White

(1 row(s) affected)

 

ID автора Телефон Фамилия автора

213-46-8915 415 986-7020 Green

(1 row(s) affected)

 

ID автора Телефон Фамилия автора

238-95-7766 415 548-7723 Carson

(1 row(s) affected)

 

au__id au_lname phone

267-41-2394 O’Leary 408 286-2428

(1 row(s) affected)

 

au_id au_lname phone

274-80-9391 Straight 415 834-2919

(1 row(s) affected)

 

au_id au_lname phone

409-56-7008 Bennet 415 658-9932

(1 row(s) affected)







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



Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

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

Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

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

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия