Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
32 views

Cursors - TSQL Tutorial: Declare Cursor Syntax

This document discusses cursor operations in TSQL such as declare cursor, create procedure, fetch, delete, update, close, set, and deallocate. It provides syntax examples for declaring cursors, opening cursors, fetching data from cursors, closing cursors, and deallocating cursors. Examples are given for deleting and updating data using cursors.

Uploaded by

CeLs Ga
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views

Cursors - TSQL Tutorial: Declare Cursor Syntax

This document discusses cursor operations in TSQL such as declare cursor, create procedure, fetch, delete, update, close, set, and deallocate. It provides syntax examples for declaring cursors, opening cursors, fetching data from cursors, closing cursors, and deallocating cursors. Examples are given for deleting and updating data using cursors.

Uploaded by

CeLs Ga
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Cursors - TSQL Tutorial

In this chapter you can learn how to work with cursors using operations like declare
cursor, create procedure, fetch, delete, update, close, set, deallocate.

Cursor operations
 Declare cursor
 Create procedure
 Open cursor
 Close cursor
 Fetch cursor
 Deallocate cursor
 Delete
 Update

Declare cursors
Declare cursor Syntax:
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_query_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ] ;

Declare simple cursor example:


DECLARE product_cursor CURSOR
FOR SELECT * FROM model.dbo.products;
OPEN product_cursor
FETCH NEXT FROM product_cursor;
Create procedure
Create procedure example:
USE model;
GO
IF OBJECT_ID ( 'dbo.productProc', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.productProc;
GO
CREATE PROCEDURE dbo.productProc
@varCursor CURSOR VARYING OUTPUT
AS
SET NOCOUNT ON;
SET @varCursor = CURSOR
FORWARD_ONLY STATIC FOR
SELECT product_id, product_name
FROM dbo.products;
OPEN @varCursor;
GO

Open cursors
Open cursor Syntax:
OPEN { { cursor_name } | cursor_variable_name }

Open cursor example:


USE model;
GO
DECLARE Student_Cursor CURSOR FOR
SELECT id, first_name, last_name, country
FROM dbo.students WHERE country != 'US';
OPEN Student_Cursor;
FETCH NEXT FROM Student_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Student_Cursor;
END;
CLOSE Student_Cursor;
DEALLOCATE Student_Cursor;
GO
Close cursors
Close cursor Syntax:
CLOSE { { cursor_name } | cursor_variable_name }

Close cursor example:


USE model;
GO
DECLARE Student_Cursor CURSOR FOR
SELECT ID, FIRST_NAME FROM dbo.students;
OPEN Student_Cursor;
FETCH NEXT FROM Student_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Student_Cursor;
END;
CLOSE Student_Cursor;
DEALLOCATE Student_Cursor;
GO

Fetch cursors
Fetch cursor Syntax:
FETCH
[ NEXT | PRIOR | FIRST | LAST
| ABSOLUTE { n | @nvar }
| RELATIVE { n | @nvar }
]
FROM
{ { cursor_name } | @cursor_variable_name }
[ INTO @variable_name [ ,...n ] ] ;

Fetch in cursors example:


USE model;
GO
DECLARE Student_Cursor CURSOR FOR
SELECT id, first_name, last_name, country
FROM dbo.students WHERE country = 'US';
OPEN Student_Cursor;
FETCH NEXT FROM Student_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Student_Cursor;
END;
CLOSE Student_Cursor;
DEALLOCATE Student_Cursor;
GO

Deallocate cursors
When the cursor is deallocated, the data structures comprising the cursor are released by
Microsoft SQL Server.

Deallocate cursor Syntax:


DEALLOCATE { { cursor_name } | cursor_variable_name }

Deallocate cursor example:


USE model;
GO
DECLARE @CursorName CURSOR
SET @CursorName = CURSOR LOCAL SCROLL FOR
SELECT * FROM dbo.students;

DEALLOCATE @CursorName;

SET @CursorName = CURSOR LOCAL SCROLL FOR


SELECT * FROM dbo.students;
GO
Delete in cursors
Delete in cursors example:
USE model;
GO
DECLARE MyCursor CURSOR FOR
SELECT *
FROM dbo.students
WHERE first_name = 'David' AND last_name = 'BROWN' AND id = 6 ;
OPEN MyCursor;
FETCH FROM MyCursor;
DELETE FROM dbo.students WHERE CURRENT OF MyCursor;
CLOSE MyCursor;
DEALLOCATE MyCursor;
GO

Update in cursors
Update in cursors example:
USE model;
GO
DECLARE test_cursor CURSOR LOCAL FOR
SELECT id, first_name, last_name, section
FROM dbo.students WHERE id = 2;
OPEN test_cursor;
FETCH test_cursor;
UPDATE dbo.students
SET section = 'Medicine'
FROM dbo.students
WHERE CURRENT OF test_cursor;
GO

SELECT id, first_name, last_name, section FROM dbo.students;


GO

Resources:
www.tsql.info/
www.tsql.info/cursors/cursors.php

You might also like