일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Spring Cloud
- 자바
- Kafka
- 쿼리
- MST
- aws
- retry
- db
- feign
- 데이터베이스
- PL/SQL
- 클라우드
- 코딩
- Jenkins
- 알고리즘
- MVC
- SQL
- Spring Boot
- golang
- 백준
- Spring
- 자료구조
- 페이징
- JPA
- Intellj
- Spring Cloud Feign
- 오라클
- DP
- 디자인 패턴
- 운영체제
- 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 |