2021.05.28
ex29_plsql.sql
반복문
- loop
- for loop
- while loop
loop
set serveroutput on;
begin
loop
dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss'));
end loop;
end;
declare
vnum number := 1;
begin
loop
dbms_output.put_line(vnum);
vnum := vnum + 1;
exit when vnum > 10;
end loop;
end;
create table tblLoop (
seq number primary key,
data varchar2(30) not null
);
create sequence seqLoop;
declare
vnum number := 1;
begin
loop
insert into tblLoop (seq, data) values (seqLoop.nextVal, '데이터' || vnum);
vnum := vnum + 1;
exit when vnum > 10000;
end loop;
end;
select * from tblLoop;
delete from tblLoop;
declare
vname tblInsa.name%type;
vnum number;
begin
vnum := 1015;
loop
select name into vname from tblInsa where num = vnum;
insert into tblLoop (seq, data) values (seqLoop.nextVal, vname);
vnum := vnum + 1;
exit when vnum > 1045;
end loop;
end;
select * from tblLoop;
for loop
begin
for i in 1..10 loop
dbms_output.put_line(i);
end loop;
end;
create table tblGugudan (
dan number not null,
num number not null,
result number not null,
constraint tblgugudan_dan_num_pk primary key(dan, num)
);
alter table tblGugudan
add constraint tblgugudan_dan_num_pk primary key(dan, num);
begin
for vdan in 2..9 loop
for vnum in 1..9 loop
insert into tblGugudan (dan, num, result)
values (vdan, vnum, vdan * vnum);
end loop;
end loop;
end;
select * from tblGugudan;
declare
vname tblInsa.name%type;
begin
for vnum in 1030..1040 loop
select name into vname from tblInsa where num = vnum;
insert into tblLoop (seq, data) values (seqLoop.nextVal, vname);
end loop;
end;
select * from tblLoop;
while loop
declare
vnum number := 1;
begin
while vnum <= 10 loop
dbms_output.put_line(vnum);
vnum := vnum + 1;
end loop;
end;
예외 처리부
declare
vnum number;
vname number;
begin
dbms_output.put_line('시작');
select name into vname from tblInsa where num = 1001;
dbms_output.put_line(vname);
vnum := 0;
dbms_output.put_line(100 / vnum);
dbms_output.put_line('끝');
exception
when VALUE_ERROR then
dbms_output.put_line('자료형 불일치');
when zero_divide then
dbms_output.put_line('0으로 나누려고 함');
when others then
dbms_output.put_line('예외처리');
end;
Errors and Exception Handling (oracle.com)