서버 설정


PL/SQL 의 결과물 출력 설정

set serveroutput on

변수 선언


내부 영역과 외부 영역

DECLARE
    v_sal NUMBER(7,2) := 60000;
    v_comm NUMBER(7,2) := v_sal * .20;
    v_message VARCHAR2(255):='eligible for commission';
BEGIN
    DECLARE
        v_sal NUMBER(7,2) := 50000;
        v_comm NUMBER(7,2) := 0;
        v_total_comp NUMBER(7,2) := v_sal+ v_comm;
    BEGIN
        v_message := 'CLERK not '||v_message;
        v_comm := v_sal * .30;
        dbms_output.put_line('Inner Message : ' || v_message);
        --dbms_output.put_line('Inner total : ' || v_total_comp);
        dbms_output.put_line('Inner comm : ' || v_comm);
    END;
    
    v_message := 'SALESMAN'||v_message;
    dbms_output.put_line('outer Message : ' || v_message);
    --dbms_output.put_line('outer total : ' || v_total_comp); --> 에러 외부에서 내부변수 사용불가
    dbms_output.put_line('outer comm : ' || v_comm);
END;
/

예제1.

사원번호를 입력받아

사원번호, 사원이름, 부서이름을 출력하는 PL/SQL 을 작성하시오

declare
    v_empid employees.employee_id%type := &empid;
    v_empname employees.last_name%type;
    v_deptname departments.department_name%type;
begin
    select e.employee_id, e.last_name, d.department_name
    into v_empid, v_empname, v_deptname
    from employees e
    join departments d on (e.department_id = d.department_id)
    where employee_id = v_empid;
    
    dbms_output.put_line('empid : ' || v_empid);
    dbms_output.put_line('empname : ' || v_empname);
    dbms_output.put_line('deptname : ' || v_deptname);
end;
/

예제2.

사원번호를 입력 (치환변수 사용 &)할 경우

사원이름, 급여, 연봉 → (급여 * 12 + (nvl(급여, 0) * nvl(커미션, 0) * 12))

을 출력하는 PL/SQL 을 작성하시오.