스칼라 데이터 타입은 일반 단일 데이터타입 변수와 %TYPE 데이터형 변수가 있다.
일반 단일 데이터 타입은 타입을 직접 지정하고, 알고 있어야 하고, :=으로 초기값을 부여함
%TYPE 데이터형은 %TYPE만 사용하면 되고 데이터 타입을 몰라도 된다.
특정 테이블의 컬럼에 변수를 담는다.
SET SERVEROUTPUT ON; -- 일반 단일 데이터 타입 -- 변수명 [CONSTANT] [DataType] [NOT NULL] := [초기값]; DECLARE var_emp_no NUMBER(3, 0); var_emp_name VARCHAR2(40); var_emp_grade CHAR(1) := 'A'; BEGIN var_emp_no := 123; var_emp_name := 'kim'; DBMS_OUTPUT.PUT_LINE('사원 번호 : '||var_emp_no); DBMS_OUTPUT.PUT_LINE('사원 이름 : '||var_emp_name); DBMS_OUTPUT.PUT_LINE('사원 등급 : '||var_emp_grade); END; / -- 초기 값을 생성 시 넣어도 되고 BEGIN, 시작하고 나서 넣어도 별 차이는 없다. -- 사원번호 115에 대한 이름, 급여 DESC employees; DECLARE var_emp_no NUMBER(3); var_emp_fn NVARCHAR2(8); var_emp_ln NVARCHAR2(2); var_emp_sal NUMBER; BEGIN SELECT emp_no, family_name, first_name, salary INTO var_emp_no, var_emp_ln, var_emp_fn, var_emp_sal FROM employees WHERE emp_no = 115; DBMS_OUTPUT.put_line('사원번호 : '||var_emp_no); DBMS_OUTPUT.put_line('이름 : '||var_emp_ln||''||var_emp_fn); DBMS_OUTPUT.put_line('급여 : '||var_emp_sal); END; / -- %TYPE 변수 -- [변수명] 테이블명.컬럼명%TYPE -- 변수에 테이블, 컬럼을 입력해서 타입을 가져옴 DECLARE var_emp_no employees.emp_no%TYPE; var_emp_fn employees.first_name%TYPE; var_emp_ln employees.family_name%TYPE; var_emp_sal employees.salary%TYPE; BEGIN SELECT emp_no, family_name, first_name, salary INTO var_emp_no, var_emp_ln, var_emp_fn, var_emp_sal FROM employees WHERE emp_no = 115; DBMS_OUTPUT.put_line('사원번호 : '||var_emp_no); DBMS_OUTPUT.put_line('이름 : '||var_emp_ln||''||var_emp_fn); DBMS_OUTPUT.put_line('급여 : '||var_emp_sal); END; / -- %TYPE을 이용한 프로시저 CREATE OR REPLACE PROCEDURE emp_in(ref_emp_no IN employees.emp_no%TYPE) IS var_emp_no employees.emp_no%TYPE; var_emp_fn employees.first_name%TYPE; var_emp_ln employees.family_name%TYPE; var_emp_sal employees.salary%TYPE; BEGIN SELECT emp_no, family_name, first_name, salary INTO var_emp_no, var_emp_ln, var_emp_fn, var_emp_sal FROM employees WHERE emp_no = ref_emp_no; DBMS_OUTPUT.put_line('사원번호 : '||var_emp_no); DBMS_OUTPUT.put_line('이름 : '||var_emp_ln||''||var_emp_fn); DBMS_OUTPUT.put_line('급여 : '||var_emp_sal); END; / EXEC emp_in(120);
'Oracle DB 11g > 03.PL SQL' 카테고리의 다른 글
[DB]03-06.Oracle DB PLSQL IF문, 만들어 둔 프로시저 소스 확인 (0) | 2018.10.10 |
---|---|
[DB]03-05.Oracle DB PLSQL Procedure(Insert, Update, Delete 예제) (0) | 2018.10.10 |
[DB]03-04.Oracle DB PLSQL Function (0) | 2018.10.10 |
[DB]03-03.Oracle DB PLSQL %ROWTYPE (0) | 2018.10.10 |
[DB]03-01.Oracle DB PLSQL BLOCK, IN, OUT, IN OUT (0) | 2018.10.10 |