Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • SQLD합격후기
  • googlecolaboratory
  • sql기간
  • 이것이자바다
  • 파이썬온라인
  • 비쥬얼스튜디오코드
  • CSS
  • 콜라보레이토리
  • Eclipse
  • 서버등록
  • 기간설정
  • AllArgsConstructor
  • HTML
  • 코딩앙마
  • SQL
  • Database
  • 창초기화
  • 독학후기
  • colaboratory
  • Javascript
  • 기간쿼리
  • java
  • 오류해결
  • 백준
  • spring
  • oracle
  • 시작일종료일
  • SQLD합격
  • 연습문제
  • 노마드코더

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[64일차] PL/SQL(익명블록, 변수, 상수, DML, 제어문, 함수) / 프로시저
🏫 Open API_JAVA

[64일차] PL/SQL(익명블록, 변수, 상수, DML, 제어문, 함수) / 프로시저

2022. 10. 25. 18:48
728x90

20221025(화)

  • 목차 
    - PL/SQL 기본 구조 (익명블록)
    - PL/SQL 구성요소 (변수, 상수, DML)
    - PL/SQL 제어문 (IF문, CASE문)
    - PL/SQL의 사용자 정의 함수
    - 프로시저

 


< PL/SQL 기본 구조 >

  • 실제 복잡한 비즈니스 로직을 만들때 사용
  • 일반 프로그래밍 언어에서 제공하는 많은 기능이 탑재
  • DB에 직접 탑재, 컴파일되고 실행 ➡ 성능 면에서 우수


  • 익명블록
SET SERVEROUTPUT ON;
SET SERVEROUTPUT OFF;

DECLARE   // 변수, 상수선언
	vi_num NUMBER;
BEGIN    // 실행문장
	vi_num := 100;   // 변수에 값 할당(대입)
	DBMS_OUTPUT.PUT_LINE(vi_num); // JAVA. System.out.println() 과 유사
END;

 

  • 앞에 SET SERVEROUTPUT ON; 실행해줘야 DBMS 구문 돌아감.
  • DBMS_OUTPUT.PUT_LINE(vi_num)명령어에 의해 100이라는 값이 출력된다.
  • SET SERVEROUTPUT OFF; 일 경우 100이라는 값은 나오지 않는다. 

 

 


< PL/SQL 구성요소 >

(1) 변수

  • 선언부에서 변수 선언을 하고 실행부에서 사용
    변수명 데이터타입 := 초깃값;

 

(2) 상수

  • 한 번 값을 할당하면 변하지 X
상수명 CONSTANT 데이터타입 := 상수값;

 

(3) DML문

  • PL/SQL에서 DDL문은 직접 사용할수가 없다.
    (DDL?  CREATE, ALTER, DROP 명령어)

  • DML문 사용가능.
    (DML? SELECT, INSERT, DELETE, UPDATE, MERGE 명령어)
    DECLARE // 변수, 상수 선언이 필요하지 않아도, DECLARE 구조는 사용해야 한다.
      vs_emp_name    VARCHAR2(80); -- 사원명 변수
      vs_dep_name    VARCHAR2(80); -- 부서명 변수
    BEGIN  // DDL을 직접 코딩해서 사용 불가능.
      SELECT a.emp_name, b.department_name
        INTO vs_emp_name, vs_dep_name
        FROM employees a,
             departments b
       WHERE a.department_id = b.department_id
         AND a.employee_id = 100;

      DBMS_OUTPUT.PUT_LINE( vs_emp_name || ' - ' || vs_dep_name);
    END;

 

 


< PL/SQL 제어문 >

 

(1) IF문

<조건이 1개일 경우>
    IF 조건 THEN
       조건 처리;
    END IF;
     
     
     
<조건이 2개일 경우>
    IF 조건 THEN
       조건 처리 1;
    ELSE
      조건 처리2;
    END IF;
     
     
     
<조건이 n개일 경우>
    IF 조건1 THEN
       조건 처리1;
    ELSIF 조건2 THEN
      조건 처리2;
      ...
    ELSE
       조건 처리n;
    END IF;

 

 

(2) CASE문 (2가지 종류)

<유형 1>
    CASE 표현식
        WHEN 결과1 THEN
             처리문1;
        WHEN 결과2 THEN
             처리문2;
        ...
        ELSE
             기타 처리문;
    END CASE;
     
     
     
<유형 2>
    CASE WHEN 표현식1 THEN
             처리문1;
        WHEN 표현식2 THEN
             처리문2;
        ...
        ELSE
             기타 처리문;
    END CASE;

 


< PL/SQL의 사용자 정의 함수 >

  • 함수 생성
    - SQL 함수 :
    오라클에서 제공하는 내장 함수(빌트인 함수) 
    - PL/SQL 함수 :
    사용자가 직접 로직을 구현하는 사용자 정의 함수를 말한다.
    CREATE OR REPLACE FUNCTION 함수 이름 (매개변수1, 매개변수2, ...)
    RETURN 데이터타입;
    IS[AS]
      변수, 상수 등 선언
    BEGIN
      실행부
     
      RETURN 반환값;
    [EXCEPTION
      예외 처리부]
    END [함수 이름];

 

(1) CREATE OR REPLACE FUNCTION: CREATE OR REPLACE 함수 생성

     : 이 구문을 사용해 계속 컴파일할 수 있고 마지막으로 수정된 최종본이 반영됨

(2) 매개변수

     : 함수로 전달되는 매개변수로, “매개변수명 데이터 타입” 형태로 명시한다. 매개변수는 생략할 수 있다.

(3) RETURN 데이터 타입

     : 함수가 반환할 데이터 타입을 지정한다.

(4) RETURN 반환값

     : 매개변수를 받아 특정 연산을 수행한 후 반환할 값을 명시한다.


< 프로시저 >

  • 함수는 특정 연산을 수행한 뒤 결과 값을 반환하지만
  • 프로시저는 특정한 로직을 처리하기만 하고 결과 값을 반환하지는 않는 서브 프로그램이다.
     
  • 프로시저를 생성
    : CREATE OR REPLACE PROCEDURE

  • 매개변수
    : IN은 입력 & 디폴트 / OUT은 출력 / IN OUT은 입ㆍ출력.
    CREATE OR REPLACE PROCEDURE 프로시저 이름
        (매개변수명1[IN |OUT | IN OUT] 데이터타입[:= 디폴트 값],
         매개변수명2[IN |OUT | IN OUT] 데이터타입[:= 디폴트 값],
         ...
        )
    IS[AS]
      변수, 상수 등 선언
    BEGIN
      실행부
     
    [EXCEPTION
      예외 처리부]
    END [프로시저 이름];

 

728x90
저작자표시 (새창열림)

'🏫 Open API_JAVA' 카테고리의 다른 글

[66일차] 백엔드 / 웹 프로그래밍의 이해 / 각 파일들의 역할 - jsp, servlet  (0) 2022.10.31
[65일차] 예외처리 / 트랜잭션  (0) 2022.10.30
[63일차] 계층형 쿼리 / 계층형 쿼리 응용 / WITH 절 / 분석함수 와 window 함수  (0) 2022.10.25
[62일차] 서브 쿼리  (0) 2022.10.24
[61일차] 조인의 종류 / ANSI 내부 조인 / ANSI 외부 조인  (0) 2022.10.23
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [66일차] 백엔드 / 웹 프로그래밍의 이해 / 각 파일들의 역할 - jsp, servlet
    • [65일차] 예외처리 / 트랜잭션
    • [63일차] 계층형 쿼리 / 계층형 쿼리 응용 / WITH 절 / 분석함수 와 window 함수
    • [62일차] 서브 쿼리
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바