EXTEND

2024. 2. 4. 12:08DBMS/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