Введение в стандарты языка баз данных SQL


Манипулирование данными - часть 4


(c) если в указании ориентации присутствует PRIOR или RELATIVE с отрицательным значением J, то

(i) если таблица T пуста или если позиция курсора установлена на первую строку T или перед ней, то пусть Tt будет пустой таблицей;

(ii) если позиция курсора установлена на строку R, не являющуюся первой строкой T, то пусть Tt содержит все строки T, стоящие по порядку перед R, с сохранением их порядка в T;

(iii) если позиция курсора установлена перед строкой, следующей по порядку за R, то пусть Tt содержит строку R и все строки T, стоящие по порядку перед R, с сохранением их порядка в T;

(iv) если позиция курсора установлена после последней строки T, то пусть Tt содержит все строки T с сохранением их порядка.

(d) если специфицировано RELATIVE с нулевым значением J, то

(i) если позиция курсора установлена на строку таблицы T, то пусть Tt включает одну эту строку;

(ii) в противном случае, пусть Tt будет пустой таблицей.

  • Пусть N обозначает число строк в Tt. Если J положительно, то пусть K равняется J. Если J отрицательно, то пусть K равняется N+J+1. Если J равно нулю, и специфицировано ABSOLUTE, то пусть K равняется нулю; если же J равно нулю, и специфицировано RELATIVE, то пусть K равняется 1.
  • Операция чтения выполняется следующим образом:

      (a) если K больше нуля и не больше N, то курсор позиционируется на K-тую строку Tt и соответствующую строку T; эта строка становится текущей строкой курсора;

      (b) В противном случае целям, указанным в списке целей чтения, не присваиваются никакие значения и вырабатывается условие завершения "нет данных"; при этом

      (i) если специфицирована ориентация RELATIVE с нулевым значением J, то позиция курсора не меняется;

      (ii) если явно или неявно специфицирована ориентация NEXT, либо специфицирована ориентация ABSOLUTE или RELATIVE с K, большим чем N, либо специфицирована ориентация LAST, то курсор позиционируется за последней строкой;

      (iii) в противном случае, курсор позиционируется перед первой строкой.

  • Оператор позиционного удаления имеет тот же синтаксис, что и соответствующий оператор языка SQL/89:




    - Начало -  - Назад -  - Вперед -