GOLDILOCKS 는 SQL/PSM 에서 커서의 상태를 확인하기 위해 암시적/명시적 커서 속성을 지원합니다.
암시적(Implicit) 커서 속성
직전에 수행한 SQL 문의 처리 상태를 알기 위한 용도로 사용됩니다.
속성 명 |
리턴 타입 |
설명 |
ISOPEN |
BOOLEAN |
내부적으로 CLOSE 됨 항상 FALSE |
FOUND |
BOOLEAN |
SQL 에 의해 데이터가 반환되었으면 TRUE |
NOTFOUND |
BOOLEAN |
FOUND 와 반대 |
ROWCOUNT |
INTEGER |
SQL 에 의해 영향받은 로우 수 |
테스트를 위해 테이블을 생성합니다.
CREATE TABLE MOZI ( C1 INTEGER, C2 VARCHAR(20) ); INSERT INTO MOZI (C1, C2) VALUES ( 1, 'Mozi' ); INSERT INTO MOZI (C1, C2) VALUES ( 2, 'Tistory' ); COMMIT;
gSQL> BEGIN 2 UPDATE MOZI SET C1 = C1 + 1; 3 4 DBMS_OUTPUT.PUT_LINE('ISOPEN = ' || SQL%ISOPEN ); 5 DBMS_OUTPUT.PUT_LINE('FOUND = ' || SQL%FOUND ); 6 DBMS_OUTPUT.PUT_LINE('NOTFOUND = ' || SQL%NOTFOUND ); 7 DBMS_OUTPUT.PUT_LINE('ROWCOUNT = ' || SQL%ROWCOUNT ); 8 END; 9 / ISOPEN = FALSE FOUND = TRUE NOTFOUND = FALSE ROWCOUNT = 2 Anonymous PL block executed.
명시적(Explicit) 커서 속성
커서를 선언한 뒤, 선언한 커서의 상태를 조호회는 용도로 사용됩니다.
속성 명 |
리턴 타입 |
설명 |
ISOPEN |
BOOLEAN |
커서가 정상적으로 열린 경우 TRUE |
FOUND |
BOOLEAN |
FETCH 이전 NULL FETCH 가 정상적으로 수행된 후 TRUE FETCH 에 데이터가 없는 경우 FALSE CLOSE 이후 NULL |
NOTDOUND |
BOOLEAN |
FOUND 와 반대 |
ROWCOUNT |
INTEGER |
OPEN 전 NULL OPEN 한 후 0 FETCH 가 성공할 때마다 1씩 증가 |
gSQL> DECLARE 2 CURSOR cur1 IS SELECT C1, C2 FROM MOZI; 3 v1 cur1%ROWTYPE; 4 BEGIN 5 IF cur1%ISOPEN = FALSE 6 THEN 7 OPEN cur1; 8 END IF; 9 10 LOOP 11 FETCH cur1 INTO v1; 12 13 EXIT WHEN cur1%NOTFOUND; 14 15 DBMS_OUTPUT.PUT_LINE('COUNT = ' || cur1%ROWCOUNT ); 16 END LOOP; 17 18 CLOSE cur1; 19 END; 20 / COUNT = 1 COUNT = 2 Anonymous PL block executed.
'Database > Goldilocks' 카테고리의 다른 글
[GOLDILOCKS] PL/SQL IF, CASE, FOR 사용하기 (0) | 2018.08.21 |
---|---|
[GOLDILOCKS] ERR-24000(19010): Invalid cursor state : A cursor was open on the StatementHandle. (0) | 2018.08.21 |
[GOLDILOCKS] PL/SQL 의 데이터 타입 변수 선언하기 (0) | 2018.08.20 |
[GOLDILOCKS] Excel VBA 연동하기 (0) | 2018.07.24 |
[GOLDILOCKS] gloader 를 사용하여 Table 데이터를 export, import 하기 (0) | 2018.07.12 |