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)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG
🏫 Open API_JAVA

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

[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
  • < PL/SQL 기본 구조 >
  • < PL/SQL 구성요소 >
  • < PL/SQL 제어문 >
  • < PL/SQL의 사용자 정의 함수 >
  • < 프로시저 >
'🏫 Open API_JAVA' 카테고리의 다른 글
  • [66일차] 백엔드 / 웹 프로그래밍의 이해 / 각 파일들의 역할 - jsp, servlet
  • [65일차] 예외처리 / 트랜잭션
  • [63일차] 계층형 쿼리 / 계층형 쿼리 응용 / WITH 절 / 분석함수 와 window 함수
  • [62일차] 서브 쿼리
Dorothy_YANG
Dorothy_YANG
Slowly but Surely, 비전공 문과생의 개발공부

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.