1. 반복문(LOOP, FOR LOOP, WHILE LOOP)
2. 예외처리(EXCEPTION)
1. 반복문(LOOP, FOR LOOP, WHILE LOOP)
[ LOOP ]
- 무한 루프
- 탈출 조건 처리(안하면 무한 반복)
- 예제
SET SERVEROUTPUT ON;
-- 예제1
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(TO_CHAR(SYSDATE, 'HH24:MI:SS'));
END LOOP;
END;
----> 현재시간이 무한반복.. -> 에러발생
-- 예제2
DECLARE
VNUM NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(VNUM);
VNUM := VNUM + 1;
EXIT WHEN VNUM > 10; --> EXIT: Java의 if문과 다르게 조건을 만족하면 구문을 빠져나간다.
END LOOP;
END;
-- 예제3
-- 더미데이터 + 100000개 추가하기
-- DATA: '데이터1', '데이터2', '데이터3' ..... '데이터10000'
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;
[ FOR LOOP ]
- 지정 횟수 반복
- 예제
-- 예제1
BEGIN
-- I: 루프변수
-- IN: 연결 키워드
-- 1: 초깃값
-- 10: 최댓값
-- ..: 증가
FOR I IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(I);
END LOOP;
FOR I IN REVERSE 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(I);
END LOOP;
END;
-- 예제2
-- 2~9 구구단 만들기
CREATE TABLE TBLGUGUDAN (
DAN NUMBER NOT NULL,
NUM NUMBER NOT NULL,
RESULT NUMBER NOT NULL,
-- 복합키 생성
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;
SELET * FROM TBLGUGUDAN;
-- 예제3
-- 전체 직원 중, 번호가 1015 ~ 1045 인 사람의 이름 삽입하기
DECLARE
VNAME TBLINSA.NAME%TYPE;
BEGIN
FOR VNUM IN 1015..1045 LOOP
SELECT NAME INTO VNAME FROM TBLINSA WHERE NUM = VNUM;
INSERT INTO TBLOOP (SEQ, DATA) VALUES (SEQLOOP.NEXTVAL, VNAME);
END LOOP;
END;
SELECT * FROM TBLLOOP;
[ WHILE LOOP ]
- 조건 반복
- 예제
-- 예제1
DECLARE
VNUM NUMBER := 1;
BEGIN
WHILE VNUM <= 10 LOOP
DBMS_OUTPUT.PUT_LINE(VNUM);
VNUM := VNUM + 1;
END LOOP;
END;
---> 1 ~ 10 출력
2. 예외처리(EXCEPTION)
DECLARE
VNUM NUMBER;
VNAME NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('START');
SELECT NAME INTO VNAME TBLINSA WHERE NUM = 10001;
DBMS_OUTPUT.PUT_LINE(VNAME);
VNUM := 0;
DBMS_OUTPUT.PUT_LINE(100 / VNUM);
DBMS_OUTPUT.PUT_LINE('END');
EXCEPTION
-- Java의 catch절, 예외처리부
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;
MEMO >
# SQL에서 FOR LOOP는 증감식 지정이 안된다. ex) 1..10 --> 1~10인데, 2씩증가는 안됨
# PL/SQL DECLARE에서 변수명 입력 시 항상 앞에 'V'를 붙였던 이유는 내가 접근하려는 테이블의 컬럼명과 같아도 되지만, 혼동을 주기에 다르게 하기위해 지정한다.
# 오늘 배운 EXCEPTION은 Java의 exception(예외처리)같이 일반적인 규칙이 없기때문에, Oracle DOCS에서 도움말을 참조하면서 예외구문을 넣어줘야한다.
----> 일부로 에러를 발생시키고 에러 구문의 고유번호를 참조한다. (전부 외우기가 매우 힘들다.)
----> ex) ORA-06502 ---> DOCS에서 6502 검색 후 참조한다.
# AJAX 최신기술 및 참고자료
AJAX - FETCH API (최신기술)
<script>
function fetchPage(name/페이지이름){
fetch(name/페이지이름).then(function(responese){
response.text().then(function(text){
document.querySelector('article'/html요소).innerHTML=text;/구현할 기능 이것대신 alert넣어도되고 마음대로
})
})
}
</script>
https://github.com/web-n/web2_javascript
GitHub - web-n/web2_javascript
Contribute to web-n/web2_javascript development by creating an account on GitHub.
github.com
사이트 참고자료
깃허브주소 / java web2 기반
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
[학습일지]JAVA교육일지 59일차 (0) | 2022.06.28 |
---|---|
[학습일지]JAVA교육일지 58일차 (0) | 2022.06.28 |
[학습일지]JAVA교육일지 53일차 (0) | 2022.06.24 |
[학습일지]JAVA교육일지 52일차 (0) | 2022.06.24 |
[학습일지]JAVA교육일지 51일차 (0) | 2022.06.24 |