OPEN (result set cursor)
Executes the SQL statement with result set associated with the specified database cursor
Syntax
OPEN cid
   [ USING pvar {IN|OUT|INOUT} [,...] ]
   [ WITH REOPTIMIZATION ]- cid is the identifier of the database cursor.
- pvar is a variable containing an input value for an SQL parameter.
Usage
The OPEN instruction executes the SQL statement of a cursor created by the
DECLARE instruction. The result
set is produced on the server side and rows can be fetched.
The USING clause is required to provide the SQL parameters as program variables,
if the cursor was declared with a prepared statement that includes (?) question
mark placeholders.
A subsequent OPEN statement closes the cursor and then reopens it. When the
database server reopens the cursor, it creates a new result set, based on the current values of the
variables in the USING clause.  If the variables have changed since the previous
OPEN statement, reopening the cursor can generate an entirely different result
set.
The IN, OUT or INOUT options can be used to
call stored procedures having input / output parameters and generating a result set. Use the
IN, OUT or INOUT options to indicate if a
parameter is respectively for input, output or both.
Sometimes, query execution plans need to be re-optimized when SQL parameter values change. Use            
the WITH REOPTIMIZATION clause to indicate that the query execution plan has to
be re-optimized on the database server (this operation is normally done during the
DECLARE instruction).  If this option is not supported by the database server,
it is ignored.
In an IBM® Informix® database that is ANSI-compliant, you receive an error code if you try to open a cursor that is already open. Informix only!
A cursor is closed with the CLOSE
instruction, or when the parent connection is terminated (typically, when the program ends). By
using the CLOSE instruction explicitly, you release resources allocated for the
result set in the db client library and on the database server.
The database server evaluates the values that are named in the USING clause of
the OPEN statement only when it opens the cursor. While the cursor is open,
subsequent changes to program variables in the OPEN clause do not change the result
set of the cursor; you must re-open the cursor to re-execute the statement.
If you release cursor resources with a FREE
instruction, you cannot use the cursor unless you declare the cursor again.
The IN, OUT or INOUT options can only be
used for simple variables, you cannot specify those options for a complete record with the record.*
notation.
Example
MAIN
   DEFINE k INTEGER
   DEFINE n VARCHAR(50)
   DATABASE stores 
   DECLARE c1 CURSOR FROM "SELECT cust_name FROM customer WHERE cust_id > ?"
   LET k = 102
   OPEN c1 USING k 
   FETCH c1 INTO n 
   LET k = 103
   OPEN c1 USING k 
   FETCH c1 INTO n 
END MAIN