일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- sqld deny
- SQLD 옵티마이저
- JAVA for문
- java 논리연산자
- java 상속
- sqld 자격증
- JAVA 제어문
- java spider
- java 함수
- java 구구단
- java Animal
- java 성별
- sqld remame
- PLSQL
- Java Cat
- java 로또
- java
- java Fish
- sqld grant
- java 단축키
- SQLD 특강
- SQLD 핵심포인트
- SQLD 자격시험 개념정리
- JAVA 연산자
- sqld trigger
- Java 메소드
- SQL
- java string
- sqld revoke
- sqld 옵티마이져
- Today
- Total
SQLD, ECLIPS, JAVA,PYTHON, NODE....
[Oracle] PL/SQL Class 1 - 구성, while 반복문, loop반복문, 과제 본문
2023.11.08 오후
## PLSQL(Procedural Language SQL)
:일반 프로그래밍 언어에서 가지고 있는 요소를 모두 가지고 있으며 DB업무를 처리하기 위해 최적화된 언어이다..
--접속: 특정 폴더지정 후, 명령프롬프트 내에서 메모장 경로추가
1. 구성
1) 정의부
declare //변수, 예외, 커서
2) 실행부
begin
3) 예외 처리부
조건문에서 if로 시작하면 반드시 end if로 마무리.
-- 조건문
-- if 조건 1 then
-- 명령;
-- [elsif 조건2 then
-- 명령;
-- .....
-- else 명령;
end;
/
set serveroutput on; PLSQL 사용 할 때마다 입력
(문제1)
1~10까지 짝수만 출력
set serveroutput on;
SQL> begin
for a in 1..10 loop
-- continue when mod(a,2) = 1; -- 이렇게 사용도 가능
if (mod(a,2)=1) then
continue; -- 반복문 내에서 continue 만날 시, 다시 for문(조건)으로 가고, exit 만나면 반복문 탈출
end if;
dbms_output.put_line('a의 값 --> ' || a);
end loop;
end;
/
(문제2)
1~100까지 합계 구하기
set serveroutput on;
declare
d number :=1;
hap number :=0;
begin
while d<=100 loop
hap := (hap +1)+d;
d := d+1;
end loop;
dbms_output.put_line('1~100=' || hap );
end;
/
-- while 반복문
-- 형식: while 조건 loop ~ end loop;
(문제4)
1~10까지 출력하시오 --> while 반복문 사용해서 코딩
SQL> declare
nn number := 0;
begin
while nn<10 loop
nn := nn+1;
dbms_output.put_line( ' (문제1)while반복문 1~10까지 출력: ' || nn);
end loop;
end;
/
(문제5)
1~100까지 총합 구하여 출력 --> while 반복문 사용해서 코딩
SQL> declare
aa number :=0;
ss number :=0;
begin
while aa<101 loop
ss := ss+aa;
aa := aa+1;
end loop;
dbms_output.put_line( ' (문제2)while반복문 1~100까지 총합: ' || ss);
end;
/
(문제6)
--1~10까지 출력 --> loop~ end loop 반복문
SQL> declare
e number := 0;
d_sum number := 0;
begin
loop
e :=e+1;
d_sum := d_sum+1;
exit when (e>=11);
dbms_output.put_line( ' (문제3)loop~end loop반복문 1~10까지 출력: ' || e);
end loop;
end;
/
(문제7)
-- 1~100까지 총합 구하여 출력 --> loop~ end loop 반복문
SQL> declare
s number := 0;
w_sum number :=0;
begin
loop
w_sum := w_sum+s;
s :=s+1;
exit when (s>100);
end loop;
dbms_output.put_line( ' (문제4)loop~end loop반복문 1~100까지 총합: ' || w_sum);
end;
/
(문제8)
- 입력받는 명령문 작성하시오
: accept 변수 prompt '메세지' --> PLSQL 내에서는 [&변수] 형태로 사용
accept num prompt '입력하세요:'
begin
if mod(&num, 2)=0 then
dbms_output.put_line('짝수');
else
dbms_output.put_line('홀수');
end if;
end;
/
과 제
1. 2~9까지 모든 구구단을 출력하는 프로그램(다중 for문)
SQL> set serveroutput on
set verify off
begin
for gugu_dan in 2..9 loop
for googu_dan in 1..9 loop
dbms_output.put_line(gugu_dan||'x'||googu_dan||'='||gugu_dan*googu_dan);
end loop;
dbms_output.put_line('======');
end loop;
end;
/
2. 입력한 숫자의 구구단을 출력하는 프로그램
SQL> accept num prompt '구구단 입력하세요:'
declare
v_gu number := #
begin
if v_gu= &num then
for num in 1..9 loop
dbms_output.put_line(v_gu||'x'||num||'='||v_gu*num);
end loop;
end if;
end;
/
3. 입력한 숫자만큼의 '#' 출력하는 프로그램
예) 숫자:4
#
##
###
####
SQL> accept num prompt '별 입력 -->'
declare
v_star varchar2(10); // char는 고정형, varchar는 가변형 길이
begin
for v_row in 1..&num loop
v_star := null;
for v_col in 1..v_row loop
v_star := v_star || '*';
end loop;
dbms_output.put_line(v_star);
end loop;
end;
/
(반대로)
SQL> accept num prompt '별 입력 -->'
declare
v_star varchar2(10);
begin
for v_row in reverse 1..&num loop
v_star := null;
for v_col in 1..v_row loop
v_star := v_star || '*';
end loop;
dbms_output.put_line(v_star);
end loop;
end;
/
4. 입력한 숫자의 1~입력한 숫자사이의 소수(1과 자신과만 나눠지는 수)를 구하여 출력하는 프로그램
예) 12
1~12 사이의 소수: 1,3,5,7,11
(오답)
accept num prompt '숫자를 입력하세요 : '
declare
result number := 0;
flag char(1) := 'Y';
begin
for x in 2..&num loop
for y in 2..(x-1) loop
if MOD(x,y) = 0 then
flag :='N';
exit;
end if;
end loop
if flag != 'N' then
dbms_output.put_line('소수 : '||x);
result := result + x;
end if;
end loop;
end;
/
(정답)
set verify off
set serveroutput on
accept num prompt '숫자 입력 : '
declare
v_num number(3) := #
cont number(4) := 0;
begin
for i in 1..v_num loop
cont := 0; // COUNT 함수: 숫자를 포함한 셀의 개수와 인수 목록에 포함된 숫자 개수를 셉니다.
// COUNT함수로 특정범위 or 숫자배열에 포함된 숫자 필드항목 개수를 구할 수 있음.
for j in 1..i loop
if (mod( i , j )) = 0 then // MOD는 첫 번째 매개변수를 두 번째 매개변수로 나눈 후의 나머지를 리턴합니다.
cont := cont + 1;
end if;
end loop;
if (cont = 2 or cont = 1) then
dbms_output.put_line( i );
end if;
end loop;
end;
/
'PLSQL' 카테고리의 다른 글
[Oracle] PL/SQL Class 5 - replace procedure, sequence, replace function, 아웃풋, 과제(3문제) (0) | 2023.11.13 |
---|---|
[Oracle] PL/SQL Class 4 - 과제2, 과제3 (2) | 2023.11.13 |
[Oracle] PL/SQL - 명령프롬프트 정리 (0) | 2023.11.10 |
[Oracle] PL/SQL Class 3 - 커서 2, 다중커서 과제, (0) | 2023.11.10 |
[Oracle] PL/SQL class 2 - 변수, 커서, (0) | 2023.11.09 |