1.일반 단일 데이터 타입
변수명 [CONSTANT] [DATA_TYPE] [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;
/
일반 데이터 사용 예시를 익명 프로시저로 나타냄.
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_fn, var_emp_ln, var_emp_sal
FROM employees WHERE emp_no = 117;
DBMS_OUTPUT.PUT_LINE('사원 번호 : '||var_emp_no);
DBMS_OUTPUT.PUT_LINE('성 : '||var_emp_fn);
DBMS_OUTPUT.PUT_LINE('이름 : '||var_emp_ln);
DBMS_OUTPUT.PUT_LINE('급여 : '||var_emp_sal);
END;
/
익명 프로시저에서는 변수선언시 IN, OUT을 따로 표시하지 않아도 IN, OUT 처럼 사용할 수 있다.
2.%TYPE변수
[변수명] 테이블명.컬럼명%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.family_name%TYPE;
var_emp_ln employees.first_name%TYPE;
var_emp_sal employees.salary%TYPE;
BEGIN
SELECT emp_no, family_name, first_name, salary
INTO var_emp_no, var_emp_fn, var_emp_ln, var_emp_sal
FROM employees WHERE emp_no = ref_emp_no;
DBMS_OUTPUT.PUT_LINE('사원 번호 : '||var_emp_no);
DBMS_OUTPUT.PUT_LINE('성 : '||var_emp_fn);
DBMS_OUTPUT.PUT_LINE('이름 : '||var_emp_ln);
DBMS_OUTPUT.PUT_LINE('급여 : '||var_emp_sal);
END;
/
EXEC emp_in(120);
%TYPE 변수를 이용한 프로시저 생성 및 실행
3.%ROWTYPE
테이블명%ROWTYPE
테이블의 모든 컬럼을 통채로 들고 온다.
테이블명%ROWTYPE
DECLARE
v_emp employees%ROWTYPE;
BEGIN
SELECT emp_no, first_name, family_name, reg_date
INTO v_emp.emp_no, v_emp.first_name, v_emp.family_name, v_emp.reg_date
FROM employees WHERE emp_no=120;
DBMS_OUTPUT.put_line('사원번호 : '||v_emp.emp_no);
DBMS_OUTPUT.put_line('이름 : '||v_emp.first_name);
DBMS_OUTPUT.put_line('입사날짜 : '||v_emp.reg_date );
END;
/
로우타입을 이용해서 employees에 모든 컬럼들 가져와서 사용한다.
CREATE OR REPLACE PROCEDURE a(e_no IN NUMBER)
IS
v_emp employees%ROWTYPE;
BEGIN
SELECT emp_no, first_name, family_name, reg_date
INTO v_emp.emp_no, v_emp.first_name, v_emp.family_name, v_emp.reg_date
FROM employees WHERE emp_no=e_no;
DBMS_OUTPUT.put_line('사원번호 : '||v_emp.emp_no);
DBMS_OUTPUT.put_line('이름 : '||v_emp.first_name);
DBMS_OUTPUT.put_line('입사날짜 : '||v_emp.reg_date );
END;
/
EXEC a(120);
익명 프로시저를 프로시저로 바꾸어서 사용한 모습
'Old > Procedure' 카테고리의 다른 글
07_커서 (0) | 2018.10.11 |
---|---|
06_Loop,While문 (0) | 2018.10.11 |
05_IF (0) | 2018.10.10 |
04_활용 (0) | 2018.10.10 |
03_Function (0) | 2018.10.10 |