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


Статические курсоры (ODBC)

Статический курсор — это курсор, в котором результирующий набор, как представляется, статическим. Обычно он не обнаруживает изменения, внесенные в членство, порядок или значения результирующий набор после открытия курсора. Например, предположим, что статический курсор получает строку, а затем другое приложение обновляет ее. Если статический курсор возвращает строку, значения, которые он видит, не изменяются, несмотря на изменения, внесенные другим приложением.

Статические курсоры могут обнаруживать собственные обновления, удаления и вставки, хотя они не требуются для этого. Сообщается ли определенный статический курсор с помощью параметра SQL_STATIC_SENSITIVITY в SQLGetInfo. Статические курсоры никогда не обнаруживают другие обновления, удаления и вставки.

Массив состояния строки, указанный атрибутом инструкции SQL_ATTR_ROW_STATUS_PTR, может содержать SQL_ROW_SUCCESS, SQL_ROW_SUCCESS_WITH_INFO или SQL_ROW_ERROR для любой строки. Он возвращает SQL_ROW_UPDATED, SQL_ROW_DELETED или SQL_ROW_ADDED для строк, обновленных, удаленных или вставленных курсором, при условии, что курсор может обнаруживать такие изменения.

Статические курсоры обычно реализуются путем блокировки строк в результирующем наборе или путем создания копирования или моментального снимка результирующий набор. Хотя блокировки строк относительно легко сделать, у него есть недостаток значительно уменьшать параллелизм. Создание копии обеспечивает большую параллельность и позволяет курсору отслеживать собственные обновления, удаления и вставки путем изменения копии. Однако копирование является более дорогим для создания и может отходить от базовых данных, так как эти данные изменяются другими.