HPL/SQL - DECLARE CURSOR 문
HPL/SQL - DECLARE CURSOR 문
DECLARE CURSOR 문은 동적 SQL을 사용해 커서를 선언할 때 사용해요. 행 단위로 결과를 처리해야 할 때 커서가 유용해요.
출처: 문서
본문
동적 SQL을 사용해 커서를 선언하려면 DECLARE CURSOR 문을 사용할 수 있습니다.
구문:
DECLARE name CURSOR FOR | AS | IS dynamic_sql_string | select_statement;
매개변수:
| 매개변수 | 타입 | 값 | 설명 |
|---|---|---|---|
| dynamic_sql_string | VARCHAR | 변수 또는 표현식 | 커서를 정의할 동적 SQL |
| select_statement | 커서를 정의할 SQL SELECT 문 |
참고 사항:
- dynamic_sql_string 표현식은 선언 시점이 아니라 커서를 열 때(open time) 평가됩니다.
예제 1:
동적 SQL 문자열 사용하기:
DECLARE tabname VARCHAR 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;
예제 2:
SQL SELECT 문 사용하기:
DECLARE id INT;
DECLARE cur CURSOR FOR SELECT id FROM db.orders;
OPEN cur;
FETCH cur INTO id;
WHILE SQLCODE=0 THEN
PRINT id;
FETCH cur INTO id;
END WHILE;
CLOSE cur;
호환성: IBM DB2, MySQL, Teradata
같이 보기:
더 알아보기 (Learn more)
커서는 OPEN → FETCH → CLOSE 순서로 사용해요. 선언한 커서를 실제로 여는 OPEN 문과 행을 가져오는 FETCH 문을 함께 보면 흐름이 더 명확해져요.