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
- 예외미루기
- 정수형타입
- 예외처리
- 제네릭
- 참조형변수
- GRANT VIEW
- 자바
- cursor문
- 오라클
- 객체 비교
- 환경설정
- 어윈 사용법
- 추상메서드
- NestedFor
- 메소드오버로딩
- Java
- 컬렉션프레임워크
- 다형성
- EnhancedFor
- oracle
- 인터페이스
- 컬렉션 타입
- 자동차수리시스템
- abstract
- 집합_SET
- exception
- 한국건설관리시스템
- 생성자오버로드
- 사용자예외클래스생성
- 대덕인재개발원
Archives
- Today
- Total
거니의 velog
230802 SQL 강의 본문
--WHILE 문
--반복될 때마다 조건을 확인하고 조건이 TRUE가 되어야 loop실행
-- - 조건이 만족할 때까지 반복 처리
-- - EXIT문은 WHILE LOOP를 벗어나게 한다
-- - CONTINUE문은 11g부터 제공된다.
--1부터 10까지 더하기
SET SERVEROUTPUT ON;
DECLARE
V_SUM NUMBER := 0;
V_VAR NUMBER := 1;
BEGIN
WHILE V_VAR <= 10 LOOP
V_SUM := V_SUM + V_VAR;
V_VAR := V_VAR + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('1부터 10까지의 합=' || V_SUM);
END;
/
--WHILE문을 사용하여 * 로 피라미드 만들기
DECLARE
V_ID NUMBER := 1;
BEGIN
WHILE V_ID < 20 LOOP
DBMS_OUTPUT.PUT_LINE(RPAD('*',V_ID,'*'));
V_ID := V_ID + 2;
END LOOP;
END;
/
DECLARE
V_I NUMBER := 1;
V_J NUMBER := 1;
BEGIN
WHILE V_I < 20 LOOP
V_J := 1;
WHILE V_J <= V_I LOOP
DBMS_OUTPUT.PUT('*');
V_J := V_J + 1;
END LOOP;
V_I := V_I + 2;
DBMS_OUTPUT.PUT_LINE('');
END LOOP;
END;
/
DECLARE
V_ID NUMBER := 1;
V_ID2 NUMBER := 10;
BEGIN
DBMS_OUTPUT.PUT_LINE(''); -- PUT_LINE. 다음 라인으로 넘어가라.
WHILE V_ID < 20 LOOP
DBMS_OUTPUT.PUT(RPAD(' ' , v_id2, ' '));
DBMS_OUTPUT.PUT_LINE(RPAD('*',V_ID , '*'));
V_ID := V_ID + 2;
V_ID2 := V_ID2 - 1;
END LOOP;
END;
/
--다중 WHILE문을 사용하여 구구단 만들기
DECLARE
V_I NUMBER := 2;
V_J NUMBER := 1;
BEGIN
WHILE V_I < 10 LOOP
DBMS_OUTPUT.PUT_LINE('===========');
DBMS_OUTPUT.PUT_LINE(V_I || ' 단 ');
DBMS_OUTPUT.PUT_LINE('===========');
V_J := 1;
WHILE V_J < 10 LOOP
DBMS_OUTPUT.PUT_LINE(V_I || ' X ' || V_J || '=' || V_I * V_J);
V_J := V_J + 1;
END LOOP;
V_I := V_I + 1;
END LOOP;
END;
/
DECLARE
V_NM VARCHAR2(20);
BEGIN
SELECT LPROD_NM INTO V_NM FROM LPROD WHERE LPROD_GU = 'P201';
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('받은 값 = ' || V_NM);
DBMS_OUTPUT.PUT_LINE('행 수 = ' || SQL%ROWCOUNT);
END IF;
END;
/
--상품분류 테이블에 6개의 코드 증가
DECLARE
V_ADD NUMBER(5) := 1000;
V_CODE CHAR(4) := '';
V_ID NUMBER(5);
V_NAME CHAR(20) := '';
BEGIN
SELECT MAX(LPROD_ID) INTO V_ID FROM LPROD;
WHILE V_ADD <= 1005 LOOP
V_ADD := V_ADD + 1;
V_ID := V_ID + 1;
V_CODE := 'TT' || SUBSTR(TO_CHAR(V_ADD), -2);
V_NAME := 'LOOP TEST' || SUBSTR(TO_CHAR(V_ADD), -2);
INSERT INTO LPROD(LPROD_ID, LPROD_GU, LPROD_NM) VALUES(V_ID, V_CODE, V_NAME);
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('신규코드' || V_CODE || '가 추가되었음');
DBMS_OUTPUT.PUT_LINE('신규이름' || TRIM(V_NAME) || '가 추가되었음');
END IF;
END LOOP;
END;
/
--WHILE문을 사용하여 상기 INSERT된 데이터를 삭제하시오 ? (삭제가 되었는지 확인 메시지 출력)
DECLARE
V_ADD NUMBER(5) := 1007;
V_CODE CHAR(4) := '';
V_ID NUMBER(5);
BEGIN
SELECT MAX(LPROD_ID) INTO V_ID FROM LPROD;
WHILE V_ADD>=1002 LOOP
DELETE FROM LPROD WHERE LPROD_ID=V_ID; --V_ID : 16, 15, 14, 13, 12, 11
V_ADD := V_ADD - 1; --1006, 1005, 1004, 1003, 1002, 1001까지 1씩 감소(6회 반복)
V_ID := V_ID - 1; --LPROD_ID 최대값 즉, 16, 15, 14, 13, 12, 11
V_CODE := 'TT'||SUBSTR(TO_CHAR(V_ADD),-2); --화면에 결과를 출력하기 위함
IF SQL%FOUND THEN
--TT06, TT05, ...
DBMS_OUTPUT.PUT_LINE('기존코드' || V_CODE || '가 삭제되었습니다');
END IF;
END LOOP;
END;
/
-- GOTO : 실행처리를 임의의 지점으로 이동
DECLARE
v_sum INT := 0;
v_var INT := 1;
BEGIN
<<mylabel>>
v_sum := v_sum + v_var;
v_var := v_var + 1;
IF v_var <= 10 THEN
GOTO mylabel;
END IF;
DBMS_OUTPUT.PUT_LINE(v_sum);
DBMS_OUTPUT.PUT_LINE(v_var);
END;
/
--LOOP 문 : 조건이 없는 단순한 무한 반복문이다.
-- - EXIT 문을 사용하여 반복문을 빠져나가게 해야 한다.
--1부터 10까지 더하기
DECLARE
v_sum NUMBER := 0;
v_var NUMBER := 1;
BEGIN
LOOP
v_sum := v_sum + v_var;
v_var := v_var + 1;
IF v_var > 10 THEN
EXIT;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('1 부터 10 까지의 합 = ' || v_sum);
END;
/
'대덕인재개발원 > 대덕인재개발원_Oracle DB' 카테고리의 다른 글
230804 SQL 강의 (0) | 2023.08.04 |
---|---|
230803 SQL 강의 (0) | 2023.08.03 |
230801 SQL 강의 (0) | 2023.08.01 |
230731 SQL 강의 (0) | 2023.07.31 |
230728 SQL 강의 (0) | 2023.07.29 |