| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
- 백준
- JPA
- aws
- golang
- DP
- feign
- 쿼리
- Spring Cloud Feign
- 디자인 패턴
- 클라우드
- retry
- Kafka
- 데이터베이스
- 운영체제
- Spring Boot
- PL/SQL
- MST
- 코딩
- 페이징
- 자바
- SQL
- Intellj
- Jenkins
- MVC
- Spring Cloud
- db
- 오라클
- 자료구조
- 알고리즘
- Spring
- Today
- Total
justgo_developer
콜렉션, 바인드 변수 본문
<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 | 
'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 | 
