본문 바로가기

Oracle PL/SQL 강좌 5.1.2. LOOP문, WHILE문 LOOP문 문법- EXIT 문이 사용되었을 경우, 무조건 LOOP문을 빠져나간다.- EXITH WHEN 이 사용될 경우 WHEN 절에 LOOP를 빠져 나가는 조건을 제어 할 수 있다.LOOP문 예제 -- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용 SQL> SET SERVEROUTPUT ON ; SQL> DECLARE v_cnt NUMBER := 100; BEGIN DBMS_OUTPUT.ENABLE ; LOOP INSERT INTO emp(empno, ename , hiredate) VALUES(v_cnt, 'test'||to_char(v_cnt), sysdate); v_cnt := v_cnt+1; EXIT WHEN v_cnt > 110; END LOOP; DBMS_OUTPUT.PUT_LI.. 더보기
Oracle PL/SQL 강좌 5.1.1. FOR LOOP FOR LOOP 문법- index 는 자동 선언되는 binary_integer형 변수이고, 1씩 증가 한다.- reverse 옵션이 사용 될 경우 index 는 upper_bound에서 lower_bound로 1씩 감소 한다.- IN 다음에는 coursor나 select 문이 올 수 있다.FOR LOOP 예제 DECLARE -- 사원 이름을 출력하기 위한 PL/SQL 테이블 선언 TYPE ename_table IS TABLE OF emp.ename%TYPE INDEX BY BINARY_INTEGER; -- 사원 급여를 출력하기 위한 PL/SQL 테이블 선언 TYPE sal_table IS TABLE OF emp.sal%TYPE INDEX BY BINARY_INTEGER; ename_tab ename_ta.. 더보기
Oracle PL/SQL 강좌 4.3. DELETE 아래는 특정 사원 정보를 삭제하는 프로시저 예제이다.DELETE 예제 SQL> CREATE OR REPLACE PROCEDURE Delete_Test ( p_empno IN emp.empno%TYPE ) IS -- 삭제 데이터를 확인하기 레코드 선언 TYPE del_record IS RECORD ( v_empno emp.empno%TYPE, v_ename emp.ename%TYPE, v_hiredate emp.hiredate%TYPE) ; v_emp del_record ; BEGIN DBMS_OUTPUT.ENABLE; -- 삭제된 데이터 확인용 쿼리 SELECT empno, ename, hiredate INTO v_emp.v_empno, v_emp.v_ename, v_emp.v_hiredate FROM .. 더보기
Oracle PL/SQL 강좌 4.2. UPDATE 아래는 특정 사원의 급여를 일정 퍼센트(%) 인상/인하 하는 프로시저 예제이다.UPDATE 예제 SQL> CREATE OR REPLACE PROCEDURE Update_Test ( v_empno IN emp.empno%TYPE, -- 급여를 수정한 사원의 사번 v_rate IN NUMBER ) -- 급여의 인상/인하율 IS -- 수정 데이터를 확인하기 위한 변수 선언 v_emp emp%ROWTYPE ; BEGIN DBMS_OUTPUT.ENABLE; UPDATE emp SET sal = sal+(sal * (v_rate/100)) -- 급여를 계산 WHERE empno = v_empno ; COMMIT; DBMS_OUTPUT.PUT_LINE('데이터 수정 성공 '); -- 수정된 데이터 확인하기 위해 검색.. 더보기
Oracle PL/SQL 강좌 4.1. INSERT PL/SQL에서의 INSERT 문은 SQL과 비슷하다.INSERT 예제 -- 사원 등록 프로시저 예제 SQL> CREATE OR REPLACE PROCEDURE Insert_Test ( v_empno IN emp.empno%TYPE, v_ename IN emp.ename%TYPE, v_deptno IN emp.deptno%TYPE ) IS BEGIN DBMS_OUTPUT.ENABLE; INSERT INTO emp(empno, ename, hiredate, deptno) VALUES(v_empno, v_ename, sysdate, v_deptno); COMMIT; DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_empno ); DBMS_OUTPUT.PUT_LINE( '사원이름 : ' ||.. 더보기