После открытия указатель текущей строки установлен перед первой строкой курсора. Стандартно
оператор FETCH перемещает указатель текущей строки на следующую строку и присваивает
базовым переменным значение столбцов, соответствующее текущей строке.
Простой оператор
FETCH имеет следующий синтаксис:
FETCH <имя_курсора>
INTO <список переменных базового языка >
Оператор
извлечения очередной строки из курсора будет выглядеть следующим образом:
FETCH Debtor_reader_cursor into @FIRSTJAME,
@LAST_NAME.
@ADRES. @HOME_PHON. @WORK PHON, @TITLE
Расширенный
оператор FETCH имеет следующий синтаксис:
FETCH
[NEXT | PRIOR
| FIRST | LAST
| ABSOLUTE (n
| <имя_переменной>)
|RELATIVE{n|<имя
_nepeмeнной>}] FROM
<имя_курсора>
INTO <список базовых переменных>
Здесь параметр
NEXT задает выбор следующей строки после текущей из базового набора строк, связанного
с курсором. Параметр PRIOR задает перемещение на предыдущую строку по отношению
к текущей. Параметр FIRST задает перемещение на первую строку набора, а параметр
LAST задает перемещение на последнюю строку набора.
Кроме того,
в расширенном операторе перемещения допустимо переместиться сразу на заданную
строку, при этом допустима как абсолютная адресация, заданием параметра ABSOLUTE,
так и относительная адресация, заданием параметра RELATIVE. При относительной
адресации положительное число сдвигает указатель вниз от текущей записи, отрицательное
число сдвигает вверх от текущей записи.
Однако для
применения расширенного оператора FETCH в соответствии со стандартом SQL2 описание
курсора обязательно должно содержать ключевое слово SCROLL. Иногда такие курсоры
называют в литературе прокручиваемыми курсорами. В стандарт эти курсоры вошли
сравнительно недавно, поэтому в коммерческих СУБД очень часто операторы по работе
с подобными курсорами серьезно отличаются. Правда, реалии сегодняшнего дня заставляют
поставщиков коммерческих СУБД более строго соблюдать последний стандарт SQL.
В технической документации можно встретить две версии синтаксиса оператора FETCH:
одну, которая соответствует стандарту, и другую, которая расширяет стандарт
дополнительными возможностями, предоставляемыми только данной СУБД для работы
с курсором.
Если вы предполагаете,
что ваша БД может быть перенесена на другую платформу, а это надо всегда предусматривать,
то лучше пользоваться стандартными возможностями. В этом случае ваше приложение
будет более платформенно-независимым и легче будет его перенести на другую СУБД.
Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
- Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.
В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.
Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.