====== OPEN Statement - PL/HQL Reference ======
OPEN statement opens a cursor.
**Syntax**:
OPEN cursor_name [FOR expression | select_statement];
**Description:**
| cursor_name | The name of the previously declared cursor if FOR clause is not specified |
| FOR expression | Variable or expression that contains a dynamic SQL |
| FOR select_statement | SELECT statement |
**Examples:**
Open the previously declared cursor:
DECLARE tabname VARCHAR(20) DEFAULT 'db.orders';
DECLARE id INT;
DECLARE cur CURSOR FOR 'SELECT id FROM ' || tabname;
OPEN cur;
FETCH cur INTO id;
WHILE SQLCODE=0 THEN
PRINT id;
FETCH cur INTO id;
END WHILE;
CLOSE cur;
Open a cursor using a dynamic SQL:
DECLARE tabname VARCHAR(20) DEFAULT 'db.orders';
DECLARE id INT;
OPEN cur FOR 'SELECT id FROM ' || tabname;
FETCH cur INTO id;
WHILE SQLCODE=0 THEN
PRINT id;
FETCH cur INTO id;
END WHILE;
CLOSE cur;
**Compatibility:** Oracle, IBM DB2, Teradata, SQL Server, PostgreSQL, MySQL and Netezza.
**See also:**
* [[declare-cursor|DECLARE CURSOR]]
* [[fetch|FETCH]]
* [[close|CLOSE]]
* [[sqlcode|SQLCODE]]