일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 컴퓨터 활용 능력 1급
- github에 새 리포지토리 추가하기
- mysql 설치 방법과 정상 작동 확인하기
- 웹 디자인 기능사
- delete
- 친절한 SQL 튜닝
- 데이터 모델링
- 이것이 오라클이다
- 혼자 공부하는 네트워크
- oracle
- 인덱스의 개념과 장단점
- 리눅스 마스터 2급
- 첫 프로그래밍
- 2025-02-13
- Update
- sqld
- 클러스터형 인덱스와 보조 인덱스
- gitkraken을 통한 프로젝트 올리기
- 뷰
- 혼자 공부하는 SQL
- 운영체제
- 명령 프롬프트
- 데이터모델링
- 컴퓨터 구조
- 컴퓨터 활용 능력
- youtube review
- 혼자 공부하는 컴퓨터 구조 + 운영체제
- 열거형
- 혼자 공부하는 컴퓨터 구조 및 운영체제
- INSERT
- Today
- Total
코딩 브이로그
[이것이 오라클이다] 07장 4교시: [Oracle] PL/SQL 프로그래밍, 예외 처리, 동적 SQL 본문
[이것이 오라클이다] 07장 4교시: [Oracle] PL/SQL 프로그래밍, 예외 처리, 동적 SQL
표준프레임워크 풀스텍 개발자 홍의표 2024. 11. 4. 23:11* Youtube Link - https://www.youtube.com/watch?v=kNf-UnP0gAM&list=PLVsNizTWUw7FzFgU1qe-n7_M7eMFA9d-f&index=18
7.3 PL/SQL 프로그래밍
DECLARE 명령문으로 변수를 선언하고
BEGIN과 END 사이에 프로그래밍한다.
7.3.1 IF...ELSE...
SET SERVEROUTPUT ON;
- SERVEROUTPUT 변수 ON으로 설정
DBMS_OUTPUT.PUT_LINE('100입니다.');
- 화면에 출력한다.
IF var1 = 100 THEN
DBMS_OUTPUT.PUT_LINE('100입니다.');
ELSE
DBMS_OUTPUT.PUT_LINE('100이 아닙니다.');
END IF;
- IF문을 통해서 프로그래밍을 한다.
SELECT hire_date INTO hireDate;
- 조회된 값 hire_date 를 hireDate에 입력한다.
CURRENT_DATE()
- 세션에 저장된 현재 날짜를 조회한다.
CASE
WHEN pNumber >= 90 THEN
credit := 'A';
...
ELSE
pNumber := 'F';
END CASE;
- CASE와 END CASE 사이에 CASE 문이 들어간다.
- WHEN THEN을 통해서 조건식과 조건에 부합하면 실행할 코드가 들어간다.
NULLS LAST 명령문을 통해서
총구매액이 null인 값들을 맨 아래에서 조회된다.
원래는 null인 값들은 맨 위에서부터 조회된다.
CASE문을 통해서
총 구매액을 구간으로 회원등급을 나누어서 회원들을 조회하였다.
총 구매액이 NULL인 유령고객들은 맨 아래에 조회되도록 하였다.
WHILE 문
WHILE (조건문)
- 조건이 TRUE인 동안 반복문이 실행된다.
LOOP
END LOOP;
- LOOP 문 안에 코드들이 반복되어서 실행된다.
FOR 문
FOR iNum IN 1 .. 100
- 1에서 100까지 계속 반복된다.
- 1을 iNum에 넣고 돌고, 2를 iNum에 넣고 돌고를 100까지 계속 반복한다.
7의 배수는 건너 뛰고 합을 구한다.
MOD는 나누기의 나머지를 구하는 함수이다.
IF MOD(iNum, 7) = 0
iNum을 7로 나눈 값의 나머지를 구하는 함수이다.
CONTINUE는 다음 반복으로 넘어간다.
EXIT은 반복문을 탈출한다.
GOTO my_goto_location;
- <<my_goto_location>> 으로 이동한다. EXIT과 똑같은 역할을 하고 있다.
DBMS_LOCK.SLEEP(5);
DB가 5초간 멈춘후 실행된다.
7.3.6 예외 처리
DECLARE
-- 테이블 열의 데이터 타입과 동일하게 변수 타입을 설정
v_userName userTBL.userName%TYPE;
- userTBL 테이블의 userName 컬럼의 타입을 v_userName의 타입으로 지정한다.
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTOUT.PUT_LINE('김씨 고객이 없습니다.');
WHEN TOO_MANY_ROWS THEN
DBMS.OUTPUT.PUT_LINE('김씨 고객이 너무 많네요.');
- EXCEPTION 처리를 한다.
사용자 정의 예외 처리
userException EXCEPTION;
PRAGMA EXCEPTION_INIT(userException, -1422);
- EXCEPTION을 정의하였다. -1422는 TOO_MANY_ROWS 예외이다.
하지만 이러한 경우는 예외를 만들어서 자주 사용하지는 않는다.
1) IF SQL%NOTFOUND THEN
- SQL이 하나도 조회되지 않았을 때이다. 이러한 경우 zeroDelete 예외를 발생시키는 로직이다.
2) RAISE zeroDelete;
zeroDelete 예외를 발생시키는 것이다.
그리고
3) EXCEPTION WHEN THEN 구문
을 통해서 zeroDelete 예외를 처리한다.
RAISE_APPLICATION_ERROR(-20001, '데이터 없음 오류 발생!!');
- 마치 오라클 예외인 것 처럼 처리할 수 있다.
동적 SQL문 처리
EXECUTE IMMEDIATE v_sql INTO v_height;
- v_sql의 변수 값인 문자열로된 sql문을 실행한다. 동적 SQL문을 위해서 사용한다.
연/월/일을 찾아와서
연/월/일을 테이블명으로 생성하고 싶다.
그러면 동적 SQL문을 실행해야 하는 것이다.
감사합니다.
'Oracle' 카테고리의 다른 글
[이것이 오라클이다] 08장 2교시: [Oracle] 제약 조건 (3) | 2024.11.05 |
---|---|
[이것이 오라클이다] 08장 1교시: [Oracle] 테이블 생성 (SQL Developer 및 SQL문) (4) | 2024.11.05 |
[이것이 오라클이다] [Oracle] 조인(내부조인,외부조인,상호조인 등) (0) | 2024.11.04 |
[이것이 오라클이다] 07장 1교시: [Oracle] 데이터 형식, 변수, 형 변환 (2) | 2024.11.04 |
[이것이 오라클이다] [Oracle] WITH절, INSERT, UPDATE, DELETE, MERGE (5) | 2024.11.03 |