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 |