ретности, обновляемые курсоры ускоряют выполнение команд, уменьшая потребно
сти в установке замков защиты данных.
Sensitivity (чувствительность) должна выполняться для того, чтобы отразить в
курсоре внешние изменения данных, поскольку курсор транслирует операцию set-at- a-time в операцию item-at-a-time, обычную для языков программирования. Другими словами, курсор может быть открыт, а затем прочитан (вызван) постепенно. Это дает
возможность изменять данные, на которые указывает курсор, в то время, когда они
еще читаются. Что случается, если другое предложение изменяет данные, которые
еще читаются открытым курсором? В соответствии со старым стандартом, ответ мог быть только один "Знает только бог!" Согласно же стандарту SQL 92, можно объявить курсор нечувствительньш (insensitive), и в этом случае он будет полностью игнориро вать внешний мир. Нечувствительными могут быть только курсоры read-only. Нынеш ний стандарт не позволяет объявить курсор чувствительным для того, чтобы в нем отражались внешние изменения данных. (Можно оставить курсор неопределенным, и тогда все, что с ним произойдет, зависит только от конкретной реализации. Остается
надеяться на то, что в данной реализации по крайней мере нет противоречий и случаи,
связанные с неопределенностью курсора оговорены в системной документации.) Кроме того, можно задать прокручивающиеся курсоры (saoll). В общем случае
строки в таблице являются неупорядоченными, а строки связанные курсором, могут иметь произвольный или определенный порядок. Ранее было необходимо оперировать строками по одной за единицу времени (за один шаг обработки данных), начиная с первой и перебирая их по одной вплоть до последней. Прокручивающийся курсор по зволяет перемещаться скачками, возвращаться назад по мере необходимости и т.д. Ом
должен иметь статус "только для чтения".
Последнее расширение концепции курсора - динамические курсоры т.е. курсоры динамического языка SQL, которые не поддерживались в предыдущем стандарте. В
таком языке заранее неизвестно, какой запрос должен содержать курсор, поэтому со
держимым курсора считается строковая переменная, которая может быть множеством
текстовых данных, полученных по запросу во время его выполнения. Фактически,
само имя курсора можно сделать переменным, используя предложение ALLOCATE CURSOR вместо обычного DECLARE CURSOR, поэтому вы не должны знать зара нее, сколько курсоров понадобится пользователю приложения. Подобно статическим курсорам, динамические курсоры могут быть "только для чтения", нечувствительны
ми и прокручивающимися.
Ориентация клиент/сервер. Новый стандарт позволяет управлять связями, рас познавая всякую общую конфигурацию базы данных, на которой установлено про граммное обеспечение конечного пользователя (front-end) на одном компьютере, называемом <клиентом> (client), который пытается извлечь информацию из СУБД (''Ьack-end"), расположенной на другом компьютере, называемом <сервером> (server). Много новых средств, относящихся к стандартизации процедур связи, схем запирания и диагностики ошибок было мотивировано желанием клиентов единооб разно взаимодействовать с множеством СУБД и на множестве серверов.