콜렉션 함수란?
일반 프로그래밍 언어에서 사용하는 배열 타입을 PL/SQL 에서는 콜렉션이라고 합니다.
연관 배열(Associative Array)
정의
Java의 Hash-Map 과 같이 키와 값으로 구성되어있는 콜렉션입니다.
키값을 Index라고 하기 때문에 Index-By Table 이라고 합니다.
키값으로는 숫자가 들어가며 , Binary_Integer , Pls_Integer 가 들어 갑니다.
위 값은 Number 보다 작은 저장영역을 사용하여 산술 연산 시 보다 빠릅니다.
DECLARE
tname varchar2(20);
TYPE t_emp_name IS TABLE OF
employees.last_name%type
INDEX BY BINARY_INTEGER;
v_name t_emp_name;
BEGIN
SELECT last_name
INTO tname
FROM employees
WHERE employee_id =100;
v_name(0) := tname;
dbms_output.put_line(v_name(0));
END;
/
-----------------------------------------------------------
DECLARE
TYPE tbl_type is table of
employees.last_name%TYPE
INDEX BY BINARY_INTEGER;
vtbl_type tbl_type;
a binary_integer := 0;
BEGIN
FOR i in (select last_name from employees) LOOP
a:= a+1;
vtbl_type(a):=i.last_name;
END LOOP;
FOR j in 1..a LOOP
dbms_output.put_line(vtbl_type(j));
END LOOP;
END;
/
가변 길이 배열 (VARRY, Variable-Size Array)
Java의 배열과 같이 사용하는 콜렉션이며, 고정 길이를 가집니다.
DECLARE
TYPE va_type IS VARRAY(5) OF VARCHAR2(20);
va_array va_type;
BEGIN
va_array := va_type('1', '2', '3', '', '');
FOR i IN 1..5 LOOP
dbms_output.put_line(vva_test(i));
END LOOP;
END;
중첩 테이블 (Nested Table)
VARRY와 비슷한 콜렉션이지만, 동적으로 크기가 증가됩니다.
DECLARE
TYPE nt_tbl IS TABLE OF VARCHAR2(10);
v_test nt_typ;
BEGIN
v_test := nt_tbl('1', '2', '3');
FOR i IN 1..3 LOOP
dbms_output.put_line(v_test(i));
END LOOP;
END;
바인드 변수 (비 PL/SQL 변수)란?
호스트 환경에서 생성 되어 데이터를 저장하기 때문에 호스트 변수라고도 합니다.
예약어 VARIABLE 을 쓰며 , SQL 이나 PL/SQL 에서도 사용 가능 합니다.
PL/SQL 실행 후에도 접근 가능 합니다.
print 명령어를 통해 출력 가능 합니다.
:를 붙여 이용합니다.
SET AUTOPRINT ON;
BEGIN
SELECT (salary*12+nvl(commission_pct*salary,0))
INTO :vsal
FROM employees
WHERE employee_id = 128;
END;
/
PRINT vsal;
'DataBase > Oracle' 카테고리의 다른 글
18. Oracle PL/SQL 반복문 (0) | 2020.04.03 |
---|---|
17. Oracle PL/SQL 조건문 (0) | 2020.04.02 |
15. Oracle PL/SQL (0) | 2020.04.02 |
14. Oracle 계층형쿼리 (0) | 2020.03.30 |
13. Oracle Sequence (0) | 2020.03.30 |