HPL/SQL - OPEN 문
HPL/SQL - OPEN 문
OPEN 문은 커서(cursor)를 여는 문이에요. 미리 선언해 둔 커서나 동적 SQL을 이용해 커서를 열어 행을 fetch할 준비를 합니다.
출처: 문서
본문
구문(syntax)은 다음과 같습니다.
OPEN cursor_name [FOR expression | select_statement];
Description
| Parameter | Description |
|---|---|
| cursor_name | FOR 절이 없으면 미리 선언한 커서의 이름 |
| FOR expression | 동적 SQL을 담은 변수 또는 표현식 |
| FOR select_statement | SELECT 문 |
Example: 미리 선언한 커서 열기
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;
Example: 동적 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;
호환성: Oracle, IBM DB2, Teradata, SQL Server, PostgreSQL, MySQL, Netezza
참고: DECLARE CURSOR, FETCH, CLOSE, SQLCODE
더 알아보기 (Learn more)
OPEN으로 연 커서는 반드시 CLOSE로 닫아 리소스를 해제해야 해요. FOR expression을 쓰면 테이블명처럼 런타임에 결정되는 동적 SQL도 손쉽게 커서로 실행할 수 있습니다.