Поделиться через


Размер набора строк курсора

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Возможности курсоров ODBC не ограничены выбором только одной строки за один раз. Они могут извлекать несколько строк в каждом вызове SQLFetch или SQLFetchScroll. При работе с клиентской или серверной базой данных, такой как Microsoft SQL Server, эффективнее одновременно получить несколько строк. Число строк, возвращаемых при выборке, называется размером набора строк и указывается с помощью SQL_ATTR_ROW_ARRAY_SIZE SQLSetStmtAttr.

SQLUINTEGER uwRowsize;  
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)uwRowsetSize, SQL_IS_UINTEGER);  

Курсоры, имеющие размер набора строк более 1, называются блочными курсорами.

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

  • Привязка на уровне столбца

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

  • Привязка на уровне строки

    Массив создается с использованием структур, которые содержат данные и индикаторы для всех столбцов в строке. Число структур в массиве равно размеру набора строк.

Если используется привязка со столбцами или строками, каждый вызов SQLFetch или SQLFetchScroll заполняет привязанные массивы данными из полученного набора строк.

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

Драйвер ODBC собственного клиента SQL Server предлагает оптимизацию с помощью наборов строк, чтобы быстро получить весь результирующий набор. Чтобы использовать эту оптимизацию, задайте атрибуты курсора по умолчанию (только для чтения, размер набора строк = 1) во время вызова SQLExecDirect или SQLExecute . Драйвер ODBC собственного клиента SQL Server настраивает результирующий набор по умолчанию. Это более эффективно, чем использование серверных курсоров при передаче результатов клиенту без прокрутки. После выполнения инструкции увеличьте размер набора строк и примените привязку на уровне столбца или строки. Это позволяет SQL Server использовать результирующий набор по умолчанию для эффективной отправки результирующих строк клиенту, а драйвер ODBC собственного клиента SQL Server постоянно извлекает строки из сетевых буферов на клиенте.

См. также

Свойства курсора