[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-sql-chto-takoe-kursor":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},867,"chto-takoe-kursor",25,"sql","SQL","🗃️","Что такое курсор?","Курсор — объект базы данных, который позволяет обрабатывать строки результирующего набора по одной, а не весь набор сразу, как это делают обычные SQL-команды. Курсор действует как указатель (pointer) на текущую строку в результате запроса.\n\n> **Аналогия из жизни:** курсор — как закладка, которую вы перемещаете по списку. Обычный `SELECT` — это как прочитать весь список за раз, а курсор — это перемещение по нему строка за строкой.\n\n### Порядок работы с курсором\n\n1. `DECLARE` — определить курсор (привязать к SQL-запросу)\n2. `OPEN` — открыть курсор (выполнить запрос)\n3. `FETCH` — получить следующую строку из курсора\n4. Обработать строку (бизнес-логика)\n5. `CLOSE` — закрыть курсор\n6. `DEALLOCATE` — освободить ресурсы (удалить ссылку курсора)\n\n```sql\nDECLARE emp_cursor CURSOR FOR\n    SELECT id, name, salary FROM employees WHERE department = 'IT';\n\nOPEN emp_cursor;\n\nFETCH NEXT FROM emp_cursor;  -- получить первую строку\n-- ... обработка ...\n\nCLOSE emp_cursor;\nDEALLOCATE emp_cursor;\n```\n\n### Когда НЕ стоит использовать курсоры\n\nВ подавляющем большинстве случаев курсоры — антипаттерн. SQL ориентирован на работу с множествами (set-based operations), и один оператор `UPDATE` или `SELECT` обычно эффективнее цикла по курсору. Курсоры оправданы, когда для каждой строки нужна сложная процедурная логика, которую невозможно выразить в SQL (например, вызов внешней процедуры для каждой строки).\n\n> **На собеседовании:** опишите порядок работы с курсором и обязательно упомяните, что в большинстве случаев курсоры — антипаттерн, и лучше использовать set-based подход. Частая ошибка — не знать, что курсоры значительно медленнее операций над множествами.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Что такое курсор? — Gymterview","Курсор — объект базы данных, который позволяет обрабатывать строки результирующего набора по одной, а не весь набор сразу, как это делают обычные SQL-команды. К","Курсор — объект базы данных, который позволяет обрабатывать строки результирующего набора по одной, а не весь набор сраз",[7,13],"Курсор — объект базы данных, который позволяет обрабатывать строки результирующего набора по одной, а не весь набор сразу, как это делают обычные SQL-команды. Курсор действует как указатель (pointer) на текущую строку в результате запроса.",true]