justgo_developer

콜렉션, 바인드 변수 본문

IT/Oracle

콜렉션, 바인드 변수

다날92 2018. 12. 2. 18:06
728x90
반응형

<Table Type 변수(컬렉션)>


- 컬렉션 : 일반 프로그래밍 언어에서 사용하는 배열 타입을

PL/SQL에서는 컬렉션이라고 한다.

- 종류

   . 연관배열(associative array / index-by table) 

: 키와 값의 쌍으로 구성된 콜렉션, java의 해시테이블과 같은 개념

   .. key 데이터 유형 - 숫자 : binary_integer, pls_integer

위 두가지 데이터 타입은 number보다 작은 저장 영역이 필요, 

산술 연산의 경우 number보다 빠르다.

    - 문자 : varchar2

   .. 값(value) - 일반 데이터 타입, 레코드 타입이 값이 될수 있다.

레코드 타입일 경우 여러개의 값을 가질 수 있다.


   . varray(variable array) : 고정 길이를 가진 배열, 일반 프로그래밍에서 사용하는 배열과 같다.

   . 중첩테이블(nested table) : varray 흡사한 구조의 배열.

배열의 크기를 명시하지 않음. 동적으로 배열의 크기가 설정됨.



- Table 타입의 선언 형식

1. 정의

Type 타입명 IS TABLE OF

employees.first_name%type

INDEX BY BINARY_INTEGER


2. 선언 ( 메모리화 )

식별자 타입명;



EX)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 employees_id = 100;
 
    v_name(0) := tname;
    
    dbms_output.put_line(v_name(0));
 
end;
 
cs


Ex)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 emp_name in(select last_name from employees) loop
        a := a+1;
        vtbl_type(a) := emp_name.last_name;
    end loop;
    
    for i in 1..a
        dbms_output.put_line(vtbl_type(i));
    end loop;
end;
cs


<바인드 변수(비 PL/SQL 변수)>


   - 호스트 환경에서 생성되어 데이터를 저장하기 때문에 호스트 변수라고 한다.

   - 키워드 VARIABLE를 이용하며, SQL문이나 PL/SQL 블록에서도 사용 가능

   - PL/SQL블록이 실행된 후에도 액세스가 가능하다.

   - print명령을 이용하여 출력가능

   - :붙여 이용한다.


1
2
3
4
5
6
7
set autoprint on; //자동으로 값 출력

begin
    select (salary*12 + nvl(commission_pct*salary, 0)) into :vsal
    from employees
    where employee_id = 100;
end;
 
print vsal;
cs




728x90
반응형

'IT > Oracle' 카테고리의 다른 글

반복문(basic loop, while, for loop, continue)  (0) 2018.12.08
조건문(if문, case문)  (0) 2018.12.03
rowType 변수 및 복합변수 활용  (0) 2018.12.01
PL/SQL  (0) 2018.11.30
View(뷰)  (0) 2018.11.22