DECLARE
            --변수선언
            msg  varchar2(20) default 'gildong';
    begin
            --실행문
            --대입문
            msg := '홍길동';
            dbms_output.put_line(msg);    
            
    end;
    
    
    --프로시저 생성하기
    --사원번호를 입력받아 사원의 정보(사원명, 담당업무, 급여를 선택하는 프로시저 작성)
    --                          프로시저명
    create or replace procedure emp_update(p_empno emp.empno%type, p_sal emp.sal%type,
                                           p_deptno emp.deptno%type, p_comm emp.comm%type)
    is
         e_rec emp%rowtype;
    begin
    
        update emp set sal=p_sal, deptno = p_deptno, comm=p_comm where empno=p_empno;
    
        select empno, sal, deptno, comm into e_rec.empno, e_rec.deptno, e_rec.sal, e_rec.eomm
        from emp where empno=p_empno;
    
        dbms_output.put_line('사원번호 = ' || e_rec.empno);
        dbms_output.put_line('사원번호 = ' || e_rec.sal);
        dbms_output.put_line('사원번호 = ' || e_rec.);
        dbms_output.put_line('사원번호 = ' || e_rec.comm);
    end;
    
    --실행
    execute emp_select(7900);
    
    --%type : 실제 필드의 데이터형과 자릿수를 적용하는 변수 선언시
    --레코드 추가하는 프로시저 생성
    -- 사원번호, 사원명, 급여, 부서코드를 추가
    
    create or replace procedure emp_insert(p_empno emp.empno%type, p_ename emp.ename%type,
    p_sal emp.sal%type, p_deptno emp.deptno%type)
    is
        
    begin
        insert into emp(empno, ename, sal, emptno) values(p_empno, p_ename, p_sal, p_deptno);
        commit;
        dbms_output.put_line(p_empno || '-> 레코드가 추가됨');
    end;
    
    execute emp_insert(1234, 'XXXX', 5000, 30);
    
    
    --7369, 7499
    --레코드 1개의 모든 필드를 선택하는 프로시저 생성
    create or replace procedure emp_record(p_empno emp.empno%type)
    is
        r_emp emp%rowtype;
    begin
        update emp set
        select empno, ename, mgr, job, hiredate, sal, comm, deptno 
        into   r_emp.empno, r_emp.ename, r_emp.mgr, r_emp.job, r_emp.hiredate,r_emp.sal, r_emp.comm, r_emp.deptno
        from emp where empno=p_empno;
       
        dbms_output.put_line('사원명 = ' || r_emp.ename|| ', 입사일 = ' || r_emp.hiredate);
    end;
    
    execute emp_record(7369);
    
    
    --프로시저명 emp_update
    --사원번호, 급여, 부서번호, 보너스를 입력받아
    -- 입력받은 사원번호의 급여, 부서번호, 보너스를 수정하는 프로시저 생성하라
    create or replace procedure emp_update(p_empno emp.empno%type, p_sal emp.sal%type,
                                           p_deptno emp.deptno%type, p_comm emp.comm%type)
    is
         e_rec emp%rowtype;
    begin
    
        update emp set sal=p_sal, deptno = p_deptno, comm=p_comm where empno=p_empno;
    
        select empno, sal, deptno, comm into e_rec.empno, e_rec.deptno, e_rec.sal, e_rec.eomm
        from emp where empno=p_empno;
    
        dbms_output.put_line('사원번호 = ' || e_rec.empno);
        dbms_output.put_line('사원번호 = ' || e_rec.ename);
        dbms_output.put_line('사원번호 = ' || e_rec.sal);
        dbms_output.put_line('사원번호 = ' || e_rec.comm);
    end;

    'DB > Oracle' 카테고리의 다른 글

    [oracle] 프로시저 while문  (0) 2021.03.08
    [oracle] 프로시저 if문  (0) 2021.03.08
    [Oracle] 백업 및 복원  (0) 2021.02.17
    오라클 외부접속하는방법  (0) 2021.02.06
    ORA-01031: insufficient privileges  (0) 2021.02.06
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기