반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- String char[] 형변환
- ID중복
- interrupt()
- 상관서브쿼리
- 동기화
- Daemon()
- interrupted()
- isinterrupted()
- 표현 언어
- 상관 서브 쿼리
- Linux셋팅
- first-of-child
- ThreadGroup()
- sleep()메소드
- Linux세팅
- ObjectInputStream
- InputDialog
- 메모리스트림
- include 지시자
- 리눅스셋팅
- first-child
- 리눅스세팅
- 아이디중복
- 스레드그룸
- char[] String 형변환
- StringReader
- include지시자
- MemoryStream
- include액션태그
- StringWriter
Archives
- Today
- Total
다연이네
[days14] PL/SQL 예제 본문
반응형
1. 홀수/짝수 출력
declare
vnum number(3);
vresult varchar2(10) := '홀수';
begin
vnum := :number;
if (mod(vnum,2)=0) then
vresult := '짝수';
else
vresult := '홀수'; --사실 초기값을 홀수로 줘서 else구문 필요 없음
end if;
dbms_output.put_line('> vresult ='||vresult);
--exception
end;
- IF문
2. vkor 변수를 선언하고 입력받아 수,우,미,양,가 출력
1) if문 사용
declare
vkor number(3);
vresult varchar2(3) := '수';
begin
vkor := :pkor; -- pkor 입력받는 변수는 맘대로
if (vkor between 90 and 100) then
vresult := '수';
elsif (vkor between 80 and 89) then
vresult := '우';
elsif (vkor between 70 and 79) then
vresult := '미';
elsif (vkor between 60 and 69) then
vresult := '양';
else vresult := '가';
end if;
dbms_output.put_line('> 성적은 '||vresult);
--exception
end;
- CASE문
2) case문 사용
declare
vkor number(3);
vresult varchar2(3) := '가';
begin
vkor := :pkor; -- pkor 입력받는 변수는 맘대로
vkor := trunc(vkor/10); --10으로 나눠 다시 vkor에 대입
case
when vkor in (10,9) then vresult:='수';
when vkor =8 then vresult:='우';
when vkor =7 then vresult:='미';
when vkor =6 then vresult:='양';
else vresult:='가';
end case;
dbms_output.put_line(vresult);
--exception
end;
- FOR문
for counter in [reverse] 시작값 .. 끝낼값
loop
반복적으로 할 명령 코딩
end loop;
3. 1~10까지 합 출력
declare
vi number;
vsum number:=0;
begin
for vi in 1 .. 10
loop
if vi=10 then
dbms_output.put(vi);
else dbms_output.put(vi||'+'); -- 개행하기 싫으면 line 지워라
end if;
vsum := vsum+vi; --vsum++ 불가
end loop;
dbms_output.put_line('='||vsum);
--exception
end;
- reverse 사용
declare
--vi number; for문에 사용되는 vi변수는 따로 선언하지 않아도 된다
vsum number:=0;
begin
for vi in reverse 1 .. 10
loop
if vi=1 then
dbms_output.put(vi);
else dbms_output.put(vi||'+');
end if;
vsum := vsum+vi;
end loop;
dbms_output.put_line('='||vsum);
--exception
end;
4. 구구단 2~9단 가로/세로 상관 없이 출력
declare
begin
for i in 2..9
loop
for j in 1..9
loop
if j=6 then
goto for_out; -- goto : 흐름제어를 지정한 label로 무조건 이동한다.
end if;
dbms_output.put(i||'*'||j||'='||i*j||'/');
end loop;
<<for_out>> --아무 이름이나 줘도 됨
--goto가 <<>> 여기로 온다 ==break
dbms_output.put_line(''); --이 함수가 있어야 출력이 된다. 이게 없으면 위의 코딩 출력 안됨
end loop;
--exception
end;
- WHILE문
미리 조건을 제시한 경우
WHILE 조건
LOOP
실행문;
END LOOP;
단순 loop 문을 사용한 다른 방법
LOOP
EXIT WHEN 조건;
실행문;
END LOOP;
5. while~loop 1~10 합출력
declare
vi number :=1;
vsum number :=0;
begin
while vi<=10 --조건
loop --loop == {
dbms_output.put(vi||'+');
vsum:= vsum+vi;
vi:=vi+1;
end loop; -- end loop == }
dbms_output.put_line('='||vsum);
--exception
end;
5-2. 위 쿼리를 loop exit when ~ end loop;로 변경하기
declare
vi number :=1;
vsum number :=0;
begin
loop
exit when vi>10;
if vi=10 then dbms_output.put(vi);
else
dbms_output.put(vi||'+');
end if;
vsum:= vsum+vi;
vi:=vi+1;
end loop; -- end loop == }
dbms_output.put_line('='||vsum);
--exception
end;
5-3 (어려워) while ~ loop 2~9단 출력
declare
vi number(3):=2;
vj number(3):=1;
begin
while vi<=9
loop
vj:=1;
while vj<=9
loop
dbms_output.put(vi||'*'||vj||'='||vi*vj||' ');
vj:=vj+1;
end loop;
vi:=vi+1;
dbms_output.put_line('');
end loop;
--exception
end;
반응형
'Oracle' 카테고리의 다른 글
[days14] Stored Procedure (저장 프로시저) (0) | 2020.11.17 |
---|---|
[days14] Cursor (커서) (0) | 2020.11.17 |
[days13] PL/SQL, 익명 프로시저 (0) | 2020.11.16 |
[days13] Sequence(시퀀스) (0) | 2020.11.16 |
[days12] View (2) | 2020.11.13 |
Comments