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

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

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





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

Для считывания строки данных из курсора предназначена команда 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; просмотров: 306. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

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

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

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

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