EXTEND
2024. 2. 4. 12:08ㆍDBMS/PLSQL
반응형
EXTEND 는 VARRAY 또는 NESTED TABLE 변수의 크기를 늘리는 역할을 한다.
.EXTEND 는 배열의 크기를 하나씩 늘리는 함수로 반복문에서
1_V1(i) := i; 을 통해 배열에 값을 채운다
FOR i IN 1..10 LOOP
L_V1.EXTEND; --베열의 크기를 늘림
L_V1(i) := i; -- i 값을 배에 할당
END LOOP;
VARRY 나 NESTED TABLE을 선언할 때 배열의 크기를 지정하지 않는다면 배열의 크기는 0으로 선 초기화 된다.
□ C1 테이블에 동적 배열을 정의하고 값을 할당하여 FORALL을 사용하여 배열의 값을 출력한다.
DECLARE
TYPE TNT IS TABLE OF PLS_INTEGER; --테이블 타입 정의
L_V1 TNT := TNT(); -- 숫자 타입 동적 배열
RET_V1 TNT :=TNT(); --동적배열 반환 값 저장
BEGIN --L_V1 배열에 값을 할당
FOR i IN 1..10 LOOP
L_V1.EXTEND;
L_V1(i) :=i;
END LOOP;
--FORALL 문 사용 L_V1 배열 값을 TEST 테이블에 한꺼번에 삽입
FORALL i IN L_V1.FIRST..L_V1.LAST
INSERT INTO TEST
VALUES (L_V1(i))
RETURNING C1 BULK COLLECT INTO RET_V1;
FOR i IN 1..RET_V1.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(RET_V1(i));
END LOOP;
END;
TYPE TNT IS TABLE OF PLS_INTEGER;를 통해 숫자 타입을 저장할 수 있는 테이블(동적 배열)을 정의하고
L_V1 TNT := TNT();와 RET_V1 TNT := TNT();를 통해 두 개의 동적 배열을 선언 한다. L_V1는 삽입할 값을 저장하고, RET_V1는 반환 값을 저장한다.
FOR i IN 1..10 LOOP 루프를 사용하여 1부터 10까지의 값을 L_V1 배열에 할당 후 FORALL 문을 사용하여 TEST 테이블에 값 삽입한다.
RETURNING C1 BULK COLLECT INTO RET_V1를 사용하여 삽입된 값의 C1 컬럼 값을 RET_V1 배열에 수집하고
RET_V1 배열의 값을 출력:
반응형
'DBMS > PLSQL' 카테고리의 다른 글
fetch row 가 2건 이상일 때 오류 (0) | 2024.05.24 |
---|---|
PL/SQL 기본 구조 (0) | 2024.04.18 |
예외 처리 PRAGMA (0) | 2024.04.14 |
여러개의 행을 한 번에 가져오는 CURSOR LOOP (0) | 2024.04.13 |
삽입 정렬 insertion Sort (0) | 2024.03.18 |