CURSOR defines a cursor. This command retrieves few rows of data in a query.
To process SQL statements, the stored procedure process assigns a memory segment to store context association. Cursors are handles or pointers to context regions. With cursors, stored procedures can control alterations in context regions.
1 2 3 | CURSOR cursor_name [ BINARY ] [ NO SCROLL ] [ { WITH | WITHOUT } HOLD ] FOR query; |
Specifies the name of a cursor to be created.
Value range: Its value must comply with the database naming convention.
Specifies that data retrieved by the cursor will be returned in binary format, not in text format.
Specifies the mode of data retrieval by the cursor.
Specifies whether the cursor can still be used after the cursor creation event.
The SELECT or VALUES clause specifies the row to return the cursor value.
Value range: SELECT or VALUES clause
Set up the cursor1 cursor.
1 | CURSOR cursor1 FOR SELECT * FROM tpcds.customer_address ORDER BY 1; |
Set up the cursor cursor2.
1 | CURSOR cursor2 FOR VALUES(1,2),(0,3) ORDER BY 1; |
An example of using the WITH HOLD cursor is as follows:
Start a transaction.
1 | START TRANSACTION; |
Set up a WITH HOLD cursor.
1 | DECLARE cursor3 CURSOR WITH HOLD FOR SELECT * FROM tpcds.customer_address ORDER BY 1; |
Fetch the first two rows from cursor3.
1 2 3 4 5 6 | FETCH FORWARD 2 FROM cursor3; ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- 1 | AAAAAAAABAAAAAAA | 18 | Jackson | Parkway | Suite 280 | Fairfield | Maricopa County | AZ | 86192 | United States | -7.00 | condo 2 | AAAAAAAACAAAAAAA | 362 | Washington 6th | RD | Suite 80 | Fairview | Taos County | NM | 85709 | United States | -7.00 | condo (2 rows) |
End the transaction.
1 | END; |
Fetch the next row from cursor3.
1 2 3 4 5 | FETCH FORWARD 1 FROM cursor3; ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- 3 | AAAAAAAADAAAAAAA | 585 | Dogwood Washington | Circle | Suite Q | Pleasant Valley | York County | PA | 12477 | United States | -5.00 | single family (1 row) |
Close a cursor.
1 | CLOSE cursor3; |