Bird
Raised Fist0
SQLquery~5 mins

CURSOR concept and usage in SQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a CURSOR in SQL?
A CURSOR is a database object used to retrieve, manipulate, and navigate through rows returned by a query one at a time.
Click to reveal answer
beginner
Why do we use a CURSOR instead of a simple SELECT statement?
We use a CURSOR when we need to process query results row by row, especially when each row requires individual handling or complex logic.
Click to reveal answer
intermediate
Name the main steps to use a CURSOR in SQL.
1. Declare the CURSOR with a SELECT query.
2. Open the CURSOR.
3. Fetch rows one by one.
4. Process each row.
5. Close the CURSOR.
6. Deallocate the CURSOR.
Click to reveal answer
intermediate
What happens if you forget to CLOSE or DEALLOCATE a CURSOR?
Not closing or deallocating a CURSOR can cause memory leaks and lock resources, slowing down or blocking the database.
Click to reveal answer
beginner
Give a simple example of DECLARE and OPEN a CURSOR in SQL.
DECLARE myCursor CURSOR FOR SELECT id, name FROM employees;
OPEN myCursor;
Click to reveal answer
What is the first step when using a CURSOR in SQL?
ADeclare the CURSOR
BFetch data
CClose the CURSOR
DDeallocate the CURSOR
Which SQL command moves the CURSOR to the next row?
AOPEN
BCLOSE
CFETCH
DDECLARE
What is the purpose of closing a CURSOR?
ATo start reading rows
BTo fetch the first row
CTo declare the CURSOR
DTo free resources and release locks
Which of these is NOT a typical CURSOR operation?
AOPEN
BINSERT
CDECLARE
DFETCH
When should you consider using a CURSOR?
AWhen you need to process rows one by one
BWhen you want to process all rows at once
CWhen you want to delete a table
DWhen creating a new database
Explain the main steps to use a CURSOR in SQL and why each step is important.
Think about how you read a book page by page and then close it when done.
You got /6 concepts.
    Describe a real-life situation where using a CURSOR would be helpful in a database.
    Imagine you want to greet each friend by name one at a time.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using a CURSOR in SQL?
      easy
      A. To process query results row by row
      B. To speed up bulk data insertion
      C. To create new tables dynamically
      D. To automatically backup the database

      Solution

      1. Step 1: Understand what a cursor does

        A cursor allows you to handle each row returned by a query individually, instead of all at once.
      2. Step 2: Compare options to cursor purpose

        Options B, C, and D describe tasks unrelated to row-by-row processing, which is the cursor's main use.
      3. Final Answer:

        To process query results row by row -> Option A
      4. Quick Check:

        Cursor = row-by-row processing [OK]
      Hint: Remember: Cursor = handle rows one at a time [OK]
      Common Mistakes:
      • Thinking cursor speeds up bulk inserts
      • Confusing cursor with table creation
      • Assuming cursor automates backups
      2. Which of the following is the correct order of cursor operations in SQL?
      easy
      A. DECLARE, FETCH, OPEN, CLOSE, DEALLOCATE
      B. OPEN, DECLARE, FETCH, CLOSE, DEALLOCATE
      C. DECLARE, OPEN, FETCH, CLOSE, DEALLOCATE
      D. FETCH, DECLARE, OPEN, CLOSE, DEALLOCATE

      Solution

      1. Step 1: Recall the cursor lifecycle

        You first DECLARE the cursor, then OPEN it to start fetching rows, FETCH rows one by one, CLOSE it when done, and finally DEALLOCATE to free resources.
      2. Step 2: Match the correct sequence

        Only DECLARE, OPEN, FETCH, CLOSE, DEALLOCATE follows this exact order. Other options mix the steps incorrectly.
      3. Final Answer:

        DECLARE, OPEN, FETCH, CLOSE, DEALLOCATE -> Option C
      4. Quick Check:

        Cursor lifecycle order = C [OK]
      Hint: Remember: Declare first, then open, fetch, close, deallocate [OK]
      Common Mistakes:
      • Opening cursor before declaring
      • Fetching before opening
      • Not deallocating after closing
      3. Given the following SQL cursor code snippet, what will be the output?
      DECLARE @Name VARCHAR(50);
      DECLARE name_cursor CURSOR FOR SELECT Name FROM Employees WHERE Department = 'Sales';
      OPEN name_cursor;
      FETCH NEXT FROM name_cursor INTO @Name;
      WHILE @@FETCH_STATUS = 0
      BEGIN
        PRINT @Name;
        FETCH NEXT FROM name_cursor INTO @Name;
      END
      CLOSE name_cursor;
      DEALLOCATE name_cursor;

      Assuming the Employees table has Sales department names: 'Alice', 'Bob', 'Carol'.
      medium
      A. Only 'Alice' is printed
      B. Syntax error due to missing FETCH
      C. No output because cursor is not opened
      D. Alice Bob Carol (each printed on a new line)

      Solution

      1. Step 1: Understand cursor fetch loop

        The cursor fetches each row where Department = 'Sales'. It prints the @Name variable for each fetched row.
      2. Step 2: Identify the printed names

        Since the table has 'Alice', 'Bob', and 'Carol' in Sales, all three names will be printed one by one.
      3. Final Answer:

        Alice Bob Carol (each printed on a new line) -> Option D
      4. Quick Check:

        Cursor prints all fetched rows [OK]
      Hint: Cursor loops print all fetched rows until none left [OK]
      Common Mistakes:
      • Assuming only first row prints
      • Forgetting to open cursor
      • Confusing fetch status check
      4. Identify the error in the following cursor code:
      DECLARE cur CURSOR FOR SELECT Id FROM Products;
      OPEN cur;
      FETCH NEXT FROM cur INTO @ProductId;
      WHILE @@FETCH_STATUS = 0
      BEGIN
        PRINT @ProductId;
      END
      CLOSE cur;
      DEALLOCATE cur;
      medium
      A. Missing FETCH NEXT inside the WHILE loop
      B. Cursor not declared properly
      C. Cursor not opened before fetching
      D. No error, code runs fine

      Solution

      1. Step 1: Check fetch inside loop

        The code fetches once before the loop but does not fetch again inside the loop, causing an infinite loop.
      2. Step 2: Identify missing statement

        To move to next row, FETCH NEXT must be inside the WHILE loop after PRINT.
      3. Final Answer:

        Missing FETCH NEXT inside the WHILE loop -> Option A
      4. Quick Check:

        Fetch inside loop needed to advance cursor [OK]
      Hint: Always fetch next row inside the loop to avoid infinite loop [OK]
      Common Mistakes:
      • Forgetting FETCH NEXT inside loop
      • Assuming one fetch is enough
      • Not opening cursor before fetch
      5. You want to update the salary of employees one by one using a cursor. Which approach correctly uses a cursor for this task?
      hard
      A. Open cursor, but never fetch rows, then update salary
      B. Declare cursor for SELECT, open it, fetch each employee, update salary inside loop, close and deallocate
      C. Declare cursor, but update salary before opening cursor
      D. Use a single UPDATE statement without cursor for all employees

      Solution

      1. Step 1: Understand row-by-row update need

        When updating salaries individually, you must fetch each employee row and update inside the loop.
      2. Step 2: Identify correct cursor usage

        Declare cursor for SELECT, open it, fetch each employee, update salary inside loop, close and deallocate correctly declares, opens, fetches, updates inside loop, then closes and deallocates cursor.
      3. Final Answer:

        Declare cursor for SELECT, open it, fetch each employee, update salary inside loop, close and deallocate -> Option B
      4. Quick Check:

        Cursor updates row-by-row inside loop [OK]
      Hint: Update inside fetch loop after opening cursor [OK]
      Common Mistakes:
      • Trying to update before opening cursor
      • Not fetching rows before update
      • Using cursor but updating all at once
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard