Old/Procedure

04_활용

깨꾹2 2018. 10. 10. 14:37

SELECT * FROM emp;


SET SERVEROUTPUT ON;


--데이터 입력 프로시저

CREATE OR REPLACE PROCEDURE insert_data(

    v_ename IN emp.ename%TYPE, v_job IN emp.job%TYPE, v_deptno IN emp.deptno%TYPE)

    IS

    BEGIN

    INSERT INTO emp (ename, job, deptno)  VALUES (v_ename, v_job, v_deptno);

    DBMS_OUTPUT.put_line('데이터 입력 성공');

    END;

/


EXEC insert_data('kim','staff',3);



설명 : insert_data라는 프로시저를 만들고 이 프로시저는 3개의 매개변수를 입력 받아서 Table에 데이터를 추가한다.



--입력받은 번호의 데이터 삭제

CREATE OR REPLACE PROCEDURE delete_data(

    no IN employees.emp_no%TYPE)

    IS

    BEGIN

    DELETE FROM employees WHERE emp_no = no;

    END;

/


SELECT * FROM employees;


EXEC delete_data(117);


설명 : delete_data라는 프로시저를 만들고 이 프로시저는 1개의 매개변수를 입력받아 입력받은 매개변수의 번호와 같은 번호의 데이터를 삭제한다.



--특정 사원의 급여 N% 올리기

--급여가 인상된 직원의 데이터를 출력(사원번호, 이름, 급여)


CREATE OR REPLACE PROCEDURE update_data( 

    no IN employees.emp_no%TYPE, n NUMBER)

    IS

    v_no  employees.emp_no%TYPE;

    v_name  employees.first_name%TYPE;

    v_salary  employees.salary%TYPE;

    BEGIN

    UPDATE employees SET salary = salary+(salary*n/100) WHERE emp_no = no;

    SELECT emp_no, first_name, salary INTO v_no, v_name, v_salary FROM employees

    WHERE emp_no = no;

    DBMS_OUTPUT.put_line(v_no);

    DBMS_OUTPUT.put_line(v_name);

    DBMS_OUTPUT.put_line(v_salary);   

    END;

/


EXEC update_data(120,10);


설명 : update_data 프로시저는 2개의 매개변수를 입력받아서 입력받은 매개변수에 따라 no번째의 사원의 월급을 n%만큼 올리고 올려진 사원의 번호, 이름, 월급을 출력하는 프로시저이다.