Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Большинство параметров прокрутки в SQLFetchScroll позиционирует курсор относительно текущей позиции или абсолютной позиции. SQLFetchScroll поддерживает получение следующих, предыдущих, первых и последних наборов строк, а также относительное получение (получение набора строк n из начала текущего набора строк) и абсолютное получение набора строк (получение набора строк, начиная с строки n). Если n является отрицательным в абсолютном извлечении, строки учитываются с конца результирующего набора. Таким образом, абсолютное получение строки -1 означает получение набора строк, начинающегося с последней строки в результирующем наборе.
Динамические курсоры определяют строки, которые были вставлены или удалены из результирующего набора, поэтому для них нет простого способа получить строку по определенному номеру, кроме как считывать с начала результирующего набора, что, скорее всего, будет медленным. Кроме того, абсолютное получение не очень полезно в динамических курсорах, так как номера строк изменяются по мере вставки и удаления строк; Таким образом, последовательное получение одного и того же номера строк может дать разные строки.
Приложения, использующие SQLFetchScroll только для его возможностей блок-курсора, таких как отчёты, скорее всего, проходят через результирующий набор один раз, используя только опцию для получения следующего набора строк. С другой стороны, приложения на основе экрана могут воспользоваться всеми возможностями SQLFetchScroll. Если приложение задаёт размер набора строк равным числу строк, отображаемых на экране, и привязывает буферы экрана к результирующему набору, оно может перевести операции полосы прокрутки непосредственно на вызовы SQLFetchScroll.
| Операция полосы прокрутки | Параметр прокрутки SQLFetchScroll |
|---|---|
| PAGE UP | SQL_FETCH_PRIOR |
| Страница вниз | SQL_FETCH_NEXT |
| Выстроимся | SQL_FETCH_RELATIVE с FetchOffset равным -1 |
| Линия не работает | SQL_FETCH_RELATIVE с FetchOffset равным 1 |
| Поле прокрутки в верхней части | SQL_FETCH_FIRST |
| Поле прокрутки внизу | SQL_FETCH_LAST |
| Положение произвольной прокрутки в окне | SQL_FETCH_ABSOLUTE |
Такие приложения также должны разместить поле прокрутки после операции прокрутки, для которой требуется текущий номер строки и количество строк. Для текущего номера строки приложения могут отслеживать текущий номер строки или вызывать SQLGetStmtAttr с атрибутом SQL_ATTR_ROW_NUMBER, чтобы получить его.
Количество строк в курсоре, которое является размером результирующего набора, доступно в поле SQL_DIAG_CURSOR_ROW_COUNT заголовка диагностики. Значение в этом поле определяется только после вызова SQLExecute, SQLExecDirect или SQLMoreResult . Это число может быть либо приблизительным, либо точным числом в зависимости от возможностей водителя. Поддержка драйвера может быть определена путем вызова SQLGetInfo с типами сведений о атрибутах курсора и проверки того, возвращается ли SQL_CA2_CRC_APPROXIMATE или SQL_CA2_CRC_EXACT бит для типа курсора.
Точное число строк никогда не поддерживается для динамического курсора. Для других типов курсоров драйвер может поддерживать точные или приблизительные числа строк, но не оба. Если драйвер не поддерживает ни точные, ни приблизительные числа строк для определенного типа курсора, поле SQL_DIAG_CURSOR_ROW_COUNT содержит количество строк, которые были возвращены до сих пор. Независимо от того, что поддерживает драйвер, SQLFetchScroll с операцией SQL_FETCH_LAST приведет к тому, что поле SQL_DIAG_CURSOR_ROW_COUNT будет содержать точное число строк.