Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Курсор — это специальная программная конструкция

Курсор — это специальная программная конструкция

Курсор — это специальная программная конструкция, позволяющая создавать именованную рабочую область для данных, извлекаемых из таблицы. К сохраненной информации доступ осуществляется последовательно. Главным преимуществом курсоров является возможность работы с отдельными строками таблицы по одной, а не набором записей в целом. К примеру, инструкции DML работают с множеством в целом, реализуя принцип “либо все, либо ничего”. Если инструкция обновления изменяет сотни тысяч строк, ошибка всего в одной строке (к примеру, нарушение ограничения) приведет к сбою всей инструкции и откату выполненных в других строках изменений. После этого потребуется исправить ошибку и заново выполнить инструкцию. Курсоры специально создавались для разрешения подобных ситуаций, обрабатывая строки одну за одной. Код, комбинирующий курсоры, циклы и условные операторы, способен сгенерировать предупреждение, сохранить обновления ошибочной строки в отдельной таблице, после чего продолжить обработку таблицы. Также курсоры предоставляют дополнительную гибкость в плане подтверждения и отката операций (подтверждение можно выполнять после обработки каждой строки), что позволит экономить системную память, а также осуществлять детализированное управление процессом. Можно задействовать условную логику и выполнять вычисление определенных значений перед тем, как они будут использованы в инструкциях DML. С помощью курсоров можно обновлять множество таблиц одними и теми же значениями. И это далеко не полный список достоинств курсоров. Разные производители СУБД реализовали курсоры по-своему. Варьируется как синтаксис, так и функциональность, так что невозможно говорить об “обобщенном курсоре”. Стандарт SQL:2003 требует прокрутки курсора, т. е. возможности перехода к предыдущей и последующей записи набора данных. До недавнего времени только несколько СУБД (в частности, Microsoft SQL Server) реализовали такую функциональность по причине того, что прокручиваемый курсор потребляет много ресурсов, и не каждая система может это выдержать. Компания Microsoft предостерегала разработчиков от использования курсоров, за исключением случаев, когда они являются единственным решением задачи. В то же время программисты PL/SQL без проблем используют курсоры в повседневной работе. Команда DECLARE ассоциирует курсор с некоторой инструкцией SELECT и определяет структуру памяти, которая будет хранить соответствующие столбцы (они могут быть разных типов). Упрощенный синтаксис

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *