--- title: "Cursors (Transact-SQL) | Microsoft Docs" ms.custom: "" ms.date: "03/16/2017" ms.prod: "sql" ms.prod_service: "database-engine, sql-database" ms.service: "" ms.component: "t-sql|language-elements" ms.reviewer: "" ms.suite: "sql" ms.technology: - "database-engine" ms.tgt_pltfrm: "" ms.topic: "language-reference" dev_langs: - "TSQL" helpviewer_keywords: - "statements [SQL Server], cursors" - "functions [SQL Server], cursors" - "cursors [SQL Server], statements" ms.assetid: 63000023-54fc-4efc-a30f-fb4d4db73aae caps.latest.revision: 15 author: "douglaslMS" ms.author: "douglasl" manager: "craigg" ms.workload: "Active" --- # Cursors (Transact-SQL) [!INCLUDE[tsql-appliesto-ss2008-asdb-xxxx-xxx-md](../../includes/tsql-appliesto-ss2008-asdb-xxxx-xxx-md.md)] [!INCLUDE[msCoName](../../includes/msconame-md.md)] [!INCLUDE[ssNoVersion](../../includes/ssnoversion-md.md)] statements produce a complete result set, but there are times when the results are best processed one row at a time. Opening a cursor on a result set allows processing the result set one row at a time. You can assign a cursor to a variable or parameter with a **cursor** data type. Cursor operations are supported on these statements: [CLOSE](../../t-sql/language-elements/close-transact-sql.md) [CREATE PROCEDURE](../../t-sql/statements/create-procedure-transact-sql.md) [DEALLOCATE](../../t-sql/language-elements/deallocate-transact-sql.md) [DECLARE CURSOR](../../t-sql/language-elements/declare-cursor-transact-sql.md) [DECLARE @local_variable](../../t-sql/language-elements/declare-local-variable-transact-sql.md) [DELETE](../../t-sql/statements/delete-transact-sql.md) [FETCH](../../t-sql/language-elements/fetch-transact-sql.md) [OPEN](../../t-sql/language-elements/open-transact-sql.md) [UPDATE](../../t-sql/queries/update-transact-sql.md) [SET](../../t-sql/statements/set-statements-transact-sql.md) These system functions and system stored procedures also support cursors: [@@CURSOR_ROWS](../../t-sql/functions/cursor-rows-transact-sql.md) [CURSOR_STATUS](../../t-sql/functions/cursor-status-transact-sql.md) [@@FETCH_STATUS](../../t-sql/functions/fetch-status-transact-sql.md) [sp_cursor_list](../../relational-databases/system-stored-procedures/sp-cursor-list-transact-sql.md) [sp_describe_cursor](../../relational-databases/system-stored-procedures/sp-describe-cursor-transact-sql.md) [sp_describe_cursor_columns](../../relational-databases/system-stored-procedures/sp-describe-cursor-columns-transact-sql.md) [sp_describe_cursor_tables](../../relational-databases/system-stored-procedures/sp-describe-cursor-tables-transact-sql.md) ## See Also [Cursors](../../relational-databases/cursors.md)