[ ORACLE 반복문(basic loop, while, for, continue) ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | /* [ 반복문 ] - basic loop문 - while문 - for 문 */ -- 1. basic loop문(조건을 나중에 검사) : DO WHILE문과 유사 -- 형식 /* loop pl/sql문장; exit when (조건); end loop; */ -- 1~10까지 출력하기 declare num number := 1; begin loop dbms_output.put_line(num); num := num + 1; exit when (num > 10); end loop; end ; / -- 2. while문(조건을 먼저 검사) /* 형식) while 조건 loop 실행문장; end loop */ declare num number := 1; begin while (num <= 10) loop DBMS_OUTPUT.PUT_LINE(num); num := num + 1; end loop; end ; / declare num number := 10; begin loop DBMS_OUTPUT.PUT_LINE(num); num := num - 1; exit when num = -1; end loop; end ; / declare num number := 10; begin while (num >= 0) loop DBMS_OUTPUT.PUT_LINE(num); num := num - 1; end loop; end ; / -- 3. FOR문 : 반복횟수를 지정할 수 있다. /* 형식) java의 FOR EACH문과 유사! IN 뒤에 나온 것이 순차적으로 i에 들어가는 개념 FOR i IN start.. end loop 실행문장 end loop; */ declare begin FOR i IN 1..10 loop DBMS_OUTPUT.PUT_LINE(i); end loop; end ; / -- for문 역순 -- reverse를 붙여주자. begin FOR n IN reverse 0..10 loop DBMS_OUTPUT.PUT_LINE(n); end loop; end ; / /*사원테이블에서 사원id를 입력받아서 사원이름의 문자길이만큼 #을 찍는 PL/SQL문을 작성해보자.(employees테이블을 이용) */ declare emp_id employees.employee_id%type := &emp_no; -- 입력받음 emp_name employees.last_name%type; emp_name_length number(20); v_char varchar2(30); begin select last_name, length(last_name) into emp_name, emp_name_length from employees where employee_id = emp_id; for i in 1..emp_name_length loop v_char := v_char || '#' ; end loop; DBMS_OUTPUT.PUT_LINE(v_char); end ; / -- continue 보조제어문(*11g부터 추가된 기능임*) ] declare tot number := 0; begin for i in 1..10 loop tot := tot + 1; DBMS_OUTPUT.put_line( 'tot : ' || tot); continue when i > 5; -- 해당 조건을 만족하면 다음 차수로 바로 가게 된다. -- 아래를 수행하지 않고 다음번 차수로 넘어가게 됨. tot := tot + i; DBMS_OUTPUT.PUT_LINE( 'tot2 :' || tot); end loop; end ; / |
'스터디 > DB(ORACLE)' 카테고리의 다른 글
ORACLE 예외처리 개념, 종류, 사용법 - (8) (0) | 2017.09.18 |
---|---|
ORACLE 커서(CURSOR) - (7) (0) | 2017.09.15 |
ORACLE 조건문(IF,CASE) -(5) (0) | 2017.09.14 |
ORACLE TABLE TYPE(컬렉션), 바인드 변수 -(4) (0) | 2017.09.14 |
ORACLE PL/SQL rowType 변수 및 복합변수 활용 예 -(3) (0) | 2017.09.13 |