0% found this document useful (0 votes)
6 views

Cours Or

The document explains the concept of database cursors in SQL, which allow for row-by-row processing of result sets. It outlines the life cycle of a cursor, including declaration, opening, fetching rows, closing, and deallocating. An example using the 'production.products' table demonstrates how to implement a cursor to retrieve and print product names and prices.

Uploaded by

jjcuken196
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Cours Or

The document explains the concept of database cursors in SQL, which allow for row-by-row processing of result sets. It outlines the life cycle of a cursor, including declaration, opening, fetching rows, closing, and deallocating. An example using the 'production.products' table demonstrates how to implement a cursor to retrieve and print product names and prices.

Uploaded by

jjcuken196
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

2025-01-13

SQL works based on set e.g., SELECT statement returns a set of rows which is called a result
set. However, sometimes, you may want to process a data set on a row by row basis. This is
where cursors come into play.

What is a database cursor

A database cursor is an object that enables traversal over the rows of a result set. It allows you
to process individual row returned by a query.

SQL Server cursor life cycle

These are steps for using a cursor:

First, declare a cursor.


DECLARE cursor_name CURSOR
FOR select_statement;

To declare a cursor, you specify its name after the DECLARE keyword with the CURSOR data
type and provide a SELECT statement that defines the result set for the cursor.

Next, open and populate the cursor by executing the SELECT statement:

OPEN cursor_name;
Then, fetch a row from the cursor into one or more variables:
FETCH NEXT FROM cursor INTO variable_list;

SQL Server provides the @@FETCHSTATUS function that returns the status of the last cursor
FETCH statement executed against the cursor; If @@FETCHSTATUS returns 0, meaning the FETCH
statement was successful. You can use the WHILE statement to fetch all rows from the cursor
as shown in the following code:

WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cursor_name;
END;
Code language: SQL (Structured Query Language) (sql)

After that, close the cursor:

CLOSE cursor_name;
Code language: SQL (Structured Query Language) (sql)

1
2025-01-13

Finally, deallocate the cursor:

DEALLOCATE cursor_name;
Code language: SQL (Structured Query Language) (sql)

SQL Server cursor example

We’ll use the prodution.products table from the sample database to show you how to use a
cursor:

First, declare two variables to hold product name and list price, and a cursor to hold the result
of a query that retrieves product name and list price from the production.products table:

DECLARE
@product_name VARCHAR(MAX),
@list_price DECIMAL;

DECLARE cursor_product CURSOR


FOR SELECT
product_name,
list_price
FROM
production.products;
Code language: SQL (Structured Query Language) (sql)

Next, open the cursor:

OPEN cursor_product;
Code language: SQL (Structured Query Language) (sql)

Then, fetch each row from the cursor and print out the product name and list price:

FETCH NEXT FROM cursor_product INTO


@product_name,
@list_price;

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @product_name + CAST(@list_price AS varchar);
FETCH NEXT FROM cursor_product INTO
@product_name,
@list_price;
END;
Code language: SQL (Structured Query Language) (sql)

After that, close the cursor:

2
2025-01-13

CLOSE cursor_product;
Code language: SQL (Structured Query Language) (sql)

Finally, deallocate the cursor to release it.

DEALLOCATE cursor_product;
Code language: SQL (Structured Query Language) (sql)

The following code snippets put everything together:

DECLARE
@product_name VARCHAR(250),
@list_price DECIMAL;

DECLARE cursor_product CURSOR


FOR SELECT
product_name,
list_price
FROM
production.products;

OPEN cursor_product;

FETCH NEXT FROM cursor_product INTO


@product_name,
@list_price;

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @product_name + CAST(@list_price AS varchar);
FETCH NEXT FROM cursor_product INTO
@product_name,
@list_price;
END;

CLOSE cursor_product;

DEALLOCATE cursor_product;

You might also like