CLOSE statement
Use the CLOSE statement when you no longer need to refer to the set of rows associated with a Select cursor or with a Function cursor. With ESQL/C, this statement can also flush and close an Insert cursor. Use this statement with Informix® ESQL/C or SPL.
Syntax
(explicit id close001)
close001
(explicit id close002)
close002
CLOSE
{
cursor_id
| [][]cursor_id_var
}
Element | Description | Restrictions | Syntax |
---|---|---|---|
cursor_id | Name of cursor to be closed | Must have been declared | Identifier |
cursor_id_var | Host variable that contains the value of cursor_id | Must be of a character data type | Must conform to language-specific rules for names. |
Usage
Closing a cursor makes the cursor unusable in any statements except OPEN or FREE and releases resources that the database server had allocated to the cursor.
In a database that is not ANSI-compliant, you can close a cursor that has not been opened or that has already been closed. No action is taken in these cases.
In an ANSI-compliant database, the database server returns an error if you close a cursor that was not open.
Examples
The
following statement closes the cursor, democursor.
EXEC SQL close democursor;
The
following is ESQL/C Source code example from demo1.ec: #include <stdio.h>
EXEC SQL define FNAME_LEN 15;
EXEC SQL define LNAME_LEN 15;
main()
{
EXEC SQL BEGIN DECLARE SECTION;
char fname[ FNAME_LEN + 1 ];
char lname[ LNAME_LEN + 1 ];
EXEC SQL END DECLARE SECTION;
printf( "DEMO1 Sample ESQL Program running.\n\n");
EXEC SQL WHENEVER ERROR STOP;
EXEC SQL connect to 'stores7';
EXEC SQL declare democursor cursor for
select fname, lname
into :fname, :lname
from customer
where lname < "C";
EXEC SQL open democursor;
for (;;)
{
EXEC SQL fetch democursor;
if (strncmp(SQLSTATE, "00", 2) != 0)
break;
printf("%s %s\n",fname, lname);
}
if (strncmp(SQLSTATE, "02", 2) != 0)
printf("SQLSTATE after fetch is %s\n", SQLSTATE);
EXEC SQL close democursor;
EXEC SQL free democursor;
EXEC SQL create routine from 'del_ord.sql';
EXEC SQL disconnect current;
printf("\nDEMO1 Sample Program over.\n\n");
exit(0);
}
1 Informix® extension
2 ESQL/C only