다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

2014 가을학기 계산 입문 연습 #4 지도교수 : 박성우 조교 : 이다훈. Python 을 설치합시다.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1 넷스팟 MAC ID 설정 방법 ( 서울캠퍼스 기준 ) 각종 스마트폰의 WiFi 를 이용시 각종 스마트폰의 WiFi 를 이용시 MAC ID 설정을 하는 방법 입니다. 아이폰의 경우는 별도의 설정없이 바로 사용이 가능하오니, 사용이 어려울 경우, 고객센터로 문의하시면 됩니다.
Power Java 제6장 조건과 반복.
Nested Queries CSED421: Database Systems Labs.
DB 프로그래밍 학기.
DB 프로그래밍 학기.
PL/SQL.
㈜디아이씨 SSLVPN 협력사 접속방법 2017년 4월.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
오라클사에서 SQL 언어에 절차적인 프로그래밍 언어를 가미해 만든 것이 PL/SQL에 대해서 학습하겠습니다.
C 5장. 제어문 #include <stdio.h> int main(void) { int num;
Chapter 7. 조건문.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
8장 서브 쿼리.
Chapter09 JavaScript 구구단표 만들기
기본적인 SELECT문 작성.
SQL*PLUS.
PL/SQL 문법 부 프로그램 (프로시저, 함수) 패키지&트리거
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
6장 그룹 함수.
어서와 Java는 처음이지! 제3장선택과 반복.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
6 반복문의 기본 for 문 여러 번 반복하는 작업은 for 문으로!.
고급 선택 제어문과 반복문 Chapter 9 C에서의 다중 선택 제어문 선 검사 반복 구조와 for 문
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
Part 07 제어 구조 ©우균, 창병모 © 우균, 창병모.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
Quiz #1.
예제로 배우는 Visual Basic 구구단 작성기로 익히는 반복문
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
KIM HEESANG PL/SQL 2 KIM HEESANG
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
3. while문 반복문의 종류 while 문 while( 조건식 )        문장;.
Chapter 09 반복문.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
어서와 C언어는 처음이지 제15장.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Restricting and Sorting Data
오라클 쿼리 문제 EMP (사원 테이블) DEPT (부서 테이블) 컬럼명 설명 EMPNO 사원번호 ENAME 사원명 JOB
기본적인 SELECT문 작성.
8장. spss statistics 20의 데이터 변환
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
2007 1학기 08 반복문.
[ 단원 04 ] 반복과 배열.
2nd day Indexing and Slicing
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
에어 PHP 입문.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
SPL3D Printer If 조건문.
Flow Diagram IV While.
C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Chapter 10 데이터 검색1.
함수, 모듈.
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
어서와 C언어는 처음이지 제21장.
 6장. SQL 쿼리.
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
Presentation transcript:

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 서진수 저

16장 PL/SQL 제어문 익히기 1

16. PL/SQL 제어문 익히기 - 조건문과 반복 문으로 나눌 수 있음. - 조건 문 : IF 문 , CASE 문 - 반복 문 : Basic Loop 문 , While 문 – 반복 횟수를 알 수 없을 경우 FOR 문 – 반복 횟수를 지정할 경우 1. 조건 문 (IF 문) : 유형 1. IF~END IF 문장 IF (조 건) THEN 실행 문장; END IF ; 2

16. PL/SQL 제어문 익히기 유형 1번의 예: EMP 테이블에서 EMPNO , ENAME, DEPTNO , DNAME 을 출력하세요. 단 DNAME 의 값은 아래와 같습니다. DEPTNO 가 10 이면 ’ACCOUNT’ , DEPTNO 가 20 이면 ‘RESEARCH’ , DEPTNO 가 30 이면 ‘SALES’ , DEPTNO 가 40 이면 ‘OPERATIONS’ 로 출력하세요. SQL> DECLARE 2 vempno emp.empno%TYPE; 3 vename emp.ename%TYPE; 4 vdeptno emp.deptno%TYPE; 5 vdname VARCHAR2(20) := null ; 다음 장에 계속… 3

16. PL/SQL 제어문 익히기 앞 장에서 계속…. 4 6 BEGIN 7 SELECT empno , ename , deptno 8 INTO vempno , vename , vdeptno 9 FROM emp 10 WHERE empno=7900; 11 IF (vdeptno = 10) THEN -- IF 문이 시작됩니다. 12 vdname := 'ACCOUNT'; 13 END IF ; -- IF 문이 끝나면 반드시 END IF 로 마쳐야 합니다. 14 IF (vdeptno = 20) THEN 15 vdname := 'RESEARCH'; 16 END IF ; 17 IF (vdeptno = 30) THEN 18 vdname := 'SALES'; 19 END IF ; 20 IF (vdeptno = 40) THEN 21 vdname := 'OPERATIONS'; 22 END IF ; 23 DBMS_OUTPUT.PUT_LINE (vempno||' '||vename||' '||vdeptno||' '||vdname); 24 END ; 25 / 앞 장에서 계속…. 4

16. PL/SQL 제어문 익히기 유형 2. IF ~ THEN ~ELSIF ~END IF 문장 ( 조건이 여러 개 일 경우 사용) IF ( 조 건 ) THEN 실행 문장 ; ELSIF ( 조 건 ) THEN END IF ; 예: EMP 테이블에서 EMPNO , ENAME, DEPTNO , DNAME 을 출력하세요. 단 DNAME 의 값은 아래와 같습니다. DEPTNO 가 10 이면 ’ACCOUNT’ , DEPTNO 가 20 이면 ‘RESEARCH’ , DEPTNO 가 30 이면 ‘SALES’ , DEPTNO 가 40 이면 ‘OPERATIONS’ 로 출력하세요 5

16. PL/SQL 제어문 익히기 앞 장에서 계속…. 6 12 IF (vdeptno = 10) THEN 13 vdname := 'ACCOUNT'; 14 ELSIF (vdeptno = 20) THEN 15 vdname := 'RESEARCH'; 16 ELSIF (vdeptno = 30) THEN 17 vdname := 'SALES'; 18 ELSIF (vdeptno = 40) THEN 19 vdname := 'OPERATIONS'; 20 END IF; 21 22 DBMS_OUTPUT.PUT_LINE (vempno||' '||vename||' '||vdeptno||' '||vdname); 23 END ; 24 / 앞 장에서 계속…. 6

16. PL/SQL 제어문 익히기 유형 3. IF~THEN~ELSE~END IF ( 조건이 2개 일 경우 사용) 실행 문장 ; ELSE END IF ; 예 : EMP 테이블에서 사원번호가 7900 번인 사원의 EMPNO , ENAME , COMM 을 출력하되 해당 사원의 COMM 이 0보다 크면 COMM 의 금액을 출력하고, 0 보다 작으면 ‘사원의 보너스는 없습니다’ 라는 문장을 출력하세요. 7

16. PL/SQL 제어문 익히기 SQL>DECLARE 2 vempno emp.empno%TYPE; 3 vename emp.ename%TYPE; 4 vcomm emp.comm%TYPE := NULL; 5 6 BEGIN 7 SELECT empno , ename , comm INTO vempno , vename , vcomm 8 FROM emp 9 WHERE empno=7900; 10 11 IF vcomm > 0 THEN 12 DBMS_OUTPUT.PUT_LINE (vename||' 사원의 보너스는 '||vcomm||'입니다'); 13 ELSE 14 DBMS_OUTPUT.PUT_LINE (vename||' 사원의 보너스는 없습니다'); 15 END IF ; 16 END ; 17 /   8

16. PL/SQL 제어문 익히기 < IF 문 연습문제 >   1. 사용자로부터 사원번호를 입력 받아 해당 사원번호의 사원의 보너스가 0 보다 클 경우 해당 사원의 보너스 금액을 출력하고 만약 보너스가 0 보다 작을 경우 ‘보너스가 없습니다’ 라는 문장을 출력하세요( 조건이 2가지 이므로 IF – THEN – ELSE – END IF 문장을 사용하세요). 2. 사 번을 입력 받아 사원(EMP)테이블에서 그 해당 사원의 이름과 연봉, 세금을 출력하세요. (단, 세금은 연봉액수에 따라 5000 만원 이상이면 5%, 4000만원부터 4999 만원까지는 4% , 3000만원부터 3999 만원까지는 3% , 2000만원부터 2999 만원까지는 2% , 나머지는 1% 로 차등 계산하세요) 조건이 여러 가지 이므로 IF – THEN – ELSIF – ELSE - END IF 문장을 사용하세요 9

16. PL/SQL 제어문 익히기 2. CASE 문 과 CASE 식 10 CASE [ 조건 ] WHEN 조건 1 THEN 결과 1 WHEN 조건 2 THEN 결과 2 … WHEN 조건 n THEN 결과 n [ ELSE 기본값 ] END ; 10

16. PL/SQL 제어문 익히기 - CASE 문 사용 예 1: 사용자로부터 사원 번호를 입력 받은 후 EMP 테이블에서 EMPNO , ENAME, DEPTNO , DNAME 을 출력하세요. 단 DNAME 의 값은 아래와 같습니다. DEPTNO 가 10 이면 ’ACCOUNT’ , DEPTNO 가 20 이면 ‘RESEARCH’ , DEPTNO 가 30 이면 ‘SALES’ , DEPTNO 가 40 이면 ‘OPERATIONS’ 로 출력하세요 SCOTT> DECLARE 2 v_empno emp.empno%TYPE ; 3 v_ename emp.ename%TYPE ; 4 v_deptno emp.deptno%TYPE ; 5 v_dname varchar2(10) ; 다음 장에 계속…. 11

16. PL/SQL 제어문 익히기 앞 장에서 계속…. 12 6 BEGIN 7 SELECT empno , ename , deptno 8 INTO v_empno , v_ename , v_deptno 9 FROM emp 10 WHERE empno = &empno ; 11 v_dname := CASE v_deptno 12 WHEN 10 THEN 'ACCOUNT' 13 WHEN 20 THEN 'RESEARCH' 14 WHEN 30 THEN 'SALES' 15 WHEN 40 THEN 'OPERATIONS' 16 END ; 17 DBMS_OUTPUT.PUT_LINE (v_empno||' '||v_ename||' '||v_deptno||' '||v_dname); 18 END ; 19 / Enter value for empno: 7900 7900 JAMES 30 SALES PL/SQL procedure successfully completed. 앞 장에서 계속…. 11 v_dname := CASE 12 WHEN v_deptno = 10 THEN 'ACCOUNT' 13 WHEN v_deptno = 20 THEN 'RESEARCH' 14 WHEN v_deptno = 30 THEN 'SALES' 15 WHEN v_deptno = 40 THEN 'OPERATIONS' 16 END ; 12

16. PL/SQL 제어문 익히기 - CASE 문 사용 예 2: EMP 테이블을 사용하여 사용자로부터 사원 번호를 입력 받아 해당 사원의 empno , ename , sal , deptno, 인상후 연봉(up_sal) 을 출력하세요. 단 부서번호가 10 번 부서는 현재 연봉의 10% 인상하고, 부서번호가 20 번 , 30 번 부서는 20 % 인상하고 , 부서번호가 30 번 보다 클 경우 30% 를 인상하세요. SCOTT> DECLARE 2 v_empno emp.empno%TYPE ; 3 v_ename emp.ename%TYPE ; 4 v_sal emp.sal%TYPE ; 5 v_deptno emp.deptno%TYPE ; 6 v_up_sal emp.sal%TYPE ; 다음 장에 계속…. 13

16. PL/SQL 제어문 익히기 앞 장에서 계속…. 14 7 BEGIN 8 SELECT empno , ename , sal , deptno 9 INTO v_empno , v_ename , v_sal , v_deptno 10 FROM emp 11 WHERE empno = &empno ; 12 v_up_sal := CASE 13 WHEN v_deptno = 10 THEN v_sal * 1.1 14 WHEN v_deptno IN (20,30) THEN v_sal*1.2 15 WHEN v_deptno > 30 THEN v_sal*1.3 16 ELSE v_sal 17 END ; 18 DBMS_OUTPUT.PUT_LINE ('사원번호'||' '||'이름'||' '||'급여'||' '||'부서번호'||' '||'인상후급여'); 19 DBMS_OUTPUT.PUT_LINE (v_empno||' '||v_ename||' '||v_sal||' '||v_deptno||' '||v_up_sal); 20 END ; 21 /   Enter value for empno: 7900 사원번호 이름 급여 부서번호 인상후급여 7900 JAMES 950 30 1140 앞 장에서 계속…. 14

16. PL/SQL 제어문 익히기 3. 반복문 반복문은 반복 횟수를 알 수 없는 경우에 사용하는 BASIC LOOP 문과 WHILE 문이 있고 반복횟수를 지정하는 FOR 문이 있습니다 1) BASIC LOOP 반복문 LOOP PL/SQL 문장 ; EXIT [ 조건 ] ; END LOOP ; 문장을 먼저 수행 후 조건을 확인함 15

16. PL/SQL 제어문 익히기 BASIC LOOP 문 사용 예 1 :

16. PL/SQL 제어문 익히기 2) WHILE 반복문 조건을 먼저 확인 후 문장을 수행함 While 조건 LOOP PL/SQL 문장 END LOOP ; 조건을 먼저 확인 후 문장을 수행함 BASIC LOOP 문은 나중에 조건을 검색하지만 WHILE 문은 시작부터 조건을 먼저 검사한 후 PL/SQL 문장을 수행하게 됩니다. 즉 BASIC LOOP 문은 조건이 틀려도 PL/SQL 문장이 1회는 실행이 되지만 WHILE 문은 아예 실행이 되지 않습니다. 17

16. PL/SQL 제어문 익히기 WHILE 반복문 사용 예 1: 18

16. PL/SQL 제어문 익히기 < BASIC LOOP 문과 WHILE 반복문 연습 문제>   BASIC LOOP 문과 WHILE 문을 사용하여 아래의 결과처럼 나오도록 각각 작성하세요. 출력 결과 화면   5 4 3 2 1 19

16. PL/SQL 제어문 익히기 20

16. PL/SQL 제어문 익히기 3) FOR 반복문 – 반복 횟수를 지정 가능함 FOR counter IN [REVERSE] start . . end LOOP Statement1 ; Statement2 ; … END LOOP ; 위 문법에서 counter 는 반복을 카운트 할 변수입니다. 원래 PL/SQL 에서는 사용할 변수를 사용하기 전에 미리 DECLARE 부분에서 선언해야 하지만 FOR 반복문 내에서 사용할 변수는 미리 선언을 하지 않아도 사용 가능합니다. 그리고 IN 다음에 start 부분에 시작번호를 쓰고 .. (점 두 개) 뒤에 end 부분에 끝 숫자를 적으시면 됩니다. 만약 역순으로 반복하려면 IN 다음에 REVERSE 를 쓰고 반복할 횟수를 쓰면 되는데 주의 사항은 REVERSE 를 쓰고 시작번호와 끝 번호는 작은 숫자부터 써야 한다는 것입니다. 21

16. PL/SQL 제어문 익히기 - FOR 반복문 예 1: 0 – 5 까지 숫자를 화면에 출력하세요. 22

16. PL/SQL 제어문 익히기 - FOR 반복문 예 2: 0 – 5 까지의 숫자를 역순으로 출력하세요. 23

16. PL/SQL 제어문 익히기 - For 반복문 예제 3 사원번호를 입력 받아 사원 이름의 글자수 만큼 화면에 * 를 찍는 문장을 작성하세요 출력 예 Enter value for eno: 7900 * ** *** **** ***** 24

16. PL/SQL 제어문 익히기 4) CONTINUE 문 (11g 에서 추가된 기능입니다) 25

16. PL/SQL 제어문 익히기 26 1. total 변수를 0 으로 초기화합니다. (2번 라인) 3. 1 을 출력합니다 (6번 라인 , 결과화면의 첫 번째 출력결과) 4. CONTINUE 문의 조건을 확인합니다 (i 가 5보다 큰가?) 5. 아니라고 판단되면 total 변수에 있는 값에 i 의 값을 더합니다 (8번 라인) 6. 더해진 값을 Out total 이라는 내용과 함께 화면에 출력합니다 (9번 라인) 기존 total 에 1이 있었고 i 변수에도 1이므로 화면에 2가 출력됩니다. 7. 다시 5번 라인으로 돌아가서 total 변수 값 2+1 을 하고 화면에 3을 출력합니다 (6번라인) 8 . CONTINUE 문의 조건을 다시 확인한 후 (7번라인) total 변수값 3 + 2(i 변수값) 을 계산해 화면에 5를 출력합니다 (출력화면 4번째 줄) 9. 위와 같은 방식으로 계속 루프를 돌다가 i 값이 5가 되면 CONTINUE 조건에 걸리게 되므로 8번, 9번 줄의 연산을 하지 않게 됩니다. 그래서 출력 화면을 보면 Total 값만 나오고 Out total 값은 나오지 않게 됩니다. 26