Discards unprocessed rows and frees any locks held by the cursor. 
  
 
	 Syntax:
 
		 
		>>---EXEC SQL---CLOSE---cursor_name---END-EXEC---><
 
		 
	  
 
	 Parameters:
 
		 
		 
		
 
			  
			  
			  
				 
				  |  
					 cursor_name 
				   | 
 
				  A previously declared and opened cursor. 
				   | 
 
				
 
			 
 
		  
 
 
		 
 
	  
 
	 
 
	 Example:
 
		 
		*Declare the cursor...
     EXEC SQL
         DECLARE C1 CURSOR FOR
            SELECT staff_id, last_name
            FROM staff
     END-EXEC
     IF SQLCODE NOT = ZERO
        DISPLAY 'Error: Could not declare cursor.'
        DISPLAY SQLERRMC
        DISPLAY SQLERRML
        EXEC SQL DISCONNECT ALL END-EXEC
        STOP RUN
     END-IF
     
     EXEC SQL
        OPEN C1
     END-EXEC
     IF SQLCODE NOT = ZERO
        DISPLAY 'Error: Could not open cursor.'
        DISPLAY SQLERRMC    
        DISPLAY SQLERRML
        EXEC SQL DISCONNECT CURRENT END-EXEC
        STOP RUN
     END-IF
     PERFORM UNTIL sqlcode NOT = ZERO
*SQLCODE will be zero as long as it has successfully fetched data
        EXEC SQL
           FETCH C1 INTO :staff-staff-id, :staff-last-name
        END-EXEC
        IF SQLCODE = ZERO
           DISPLAY "Staff ID: " staff-staff-id
           DISPLAY "Staff member's last name: " staff-last-name
        END-IF
     END-PERFORM
     EXEC SQL
        CLOSE C1
     END-EXEC
     IF SQLCODE NOT = ZERO
        DISPLAY 'Error: Could not close cursor.'
        DISPLAY SQLERRMC
        DISPLAY SQLERRML
     END-IF
 
	  
 
   
 
Comments:
The cursor must be declared and opened before it can be closed. All open cursors are closed automatically at the end of the program.