본문 바로가기

Programming/DataBase

(SQL) PL/SQL 기본적인 변수에 대하여 알아보자

728x90
반응형



▣ 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. /

반응형