▣ PL/SQL의 변수를 선언해보자
▷ 변수의 생성 규칙
1. 반드시 문자로 시작해야 한다.
2. 문자나 숫자, 특수문자를 포함할 수 있다.
3. 변수명은 30Byte 이하여야 한다.
4. 예약어(키워드)를 사용하면 안된다.
▷ 변수의 선언은 선언부(Declare)에서 선언되고, 값으로 초기화가 가능하다.
▷ 실행부에서 실행될 경우, 값이 할당된다.
▷ 서브프로그램 파라미터로 전달되기도 하며, 서브프로그램의 출력결과를 저장하기도 한다.
변수선언의 예시)
◎ 변수명 유형
- emp_no number(6,3) : 숫자를 저장하는 변수로 총 6자리를 의미하며, 소수점 이하 3자리를 의미
- emp_name varchar2(5) : 문자를 저장하는 변수를 의미하며, 총 바이트 길이는 5byte 를 저장할 수 있다.
- emp_date date : 날짜를 저장하는 변수
▣ 데이터 타입의 종류
▷ char : 고정길이의 문자를 저장, 기본 최소값 1, 최대 32,767바이트를 저장
▷ varchar2 : 가변길이의 문자를 저장, 기본값은 없다. 최대 32,767 바이트 값을 저장
▷ number(전체자리수, 소수점이하 자리수) : 전체자리수와 소수점이하 자리 수를 가진 숫자를 저장. 전체 자리수 범위 1~38까지 가능하고, 소수점 자리수의 범위는 -84~127까지 가능
▷ binary_double : 부동 소수점 수를 저장, 9바이트 필요함.
▷ date : 날짜 및 시간을 저장, 초단위로 저장, 날짜의 범위는 4712B.C(기원전) ~ 9999 A.D
▷ timestamp : date 타입을 확장, 연도, 월, 일, 시, 분, 초 및 소수로 표시되는 초단위를 저장. 자리수를 표현할때는 0~9 범위의 정수를 사용.기본값은 6
▣ 참조변수를 선언해보자
▷ 테이블명 필드명%TYPE
EX) empNo employees.employee_id%TYPE
- employees 테이블의 employee_id 와 동일한 데이터 타입으로 선언함.
emp_name employees.first_name%TYPE
- employees 테이블의 first_name 과 동일한 데이터 타입으로 선언
emp_Row employees%ROWTYPE
- employees 테이블의 모든 컬럼을 한꺼번에 저장하기 위한 변수를 선언
사용예시)
1 2 3 4 5 6 7 8 9 10 11 12 13 | declare empNo EMPtest.EMPNO%TYPE; empSalary EMPtest.SAL%TYPE; begin select empno, sal into empNo, empSalary from emptest where deptno = 10; dbms_output.put_line(empNo||' '||empSalary); end; / | cs |
1. declare(선언부)에 변수들을 선언한다.
ex) empNo는 emptest테이블의 empno타입과 같은 타입으로 선언
2. begin 부분에서 실행할 내용을 기술
select empno, sal => empno와 sal을 뽑아오겠다.
into empNo, empSalary => empNo와 empSalary에 값을 각각 넣어주겠다.
from emptest => emptest테이블에서 작업하겠다.
where deptno = 10; => deptno가 10인 데이터들을 뽑겠다.
dbms_output.put_line(empNo||' '||empSalary);
=> dbms_output.put_line은 출력하기 위한 문장 ex)printf
=> || 문장과 문장을 이어주기 위함 ex) java의 +
3. end;
4. /
1 2 3 4 5 6 7 8 9 10 | declare emp_row emptest%ROWTYPE; begin select * into emp_row from emptest where deptno = 10; dbms_output.put_line(emp_row.empno||' '||emp_row.sal||' '||emp_row.deptno); end; / | cs |
1. declare에서 rowtype의 변수를 선언한다.
2. begin부분에서 실행할 내용을 기술한다.
select * into emp_row => 모든 컬럼들을 뽑아 emp_row에 넣겠다
from emptest => emptest테이블로부터 뽑겠다.
where deptno = 10; => deptno 가 10인 데이터들을 갖고오겠다.
3. end;
4. /
'Programming > DataBase' 카테고리의 다른 글
(SQL) 바인드변수란 무엇일까? (0) | 2018.04.23 |
---|---|
(SQL) 복합변수가 무엇일까? (1) | 2018.04.23 |
[SQL] PL/SQL이란 무엇일까? (0) | 2018.04.23 |
(SQL) SQL Developer를 설치해보자! (1) | 2018.04.22 |
[SQL]OUTER JOIN(외부조인)에 대해 알아보자! (1) | 2018.04.20 |