[TIL] Oracle-PL/SQL

테디·2022년 5월 31일
0
post-thumbnail

1. PL/SQL이란?

Oracle's Procedural Language extension to SQL
SQL에서 확장된 절차적 프로그래밍 언어이며 변수, 조건 처리, 반복처리 등 다양한 기능을 사용할 수 있다.


01. PL/SQL를 사용하는 이유

  • 대용량 데이터를 연산할 경우 프로시저함수를 통해 데이터를 연산, 가공하여 최종 결과만 출력할 수 있다.
  • 쿼리문을 직접적으로 노출하지 않는다
  • 이식성이 좋다

02. PL/SQL의 기본 구조

DECLARE
[실행에 필요한 여러 요소 선언]; -선택
BEGIN
[작업을 위해 실제 실행하는 명령]; -필수
EXCEPTION
[PL/SQL 수행 도중 발생하는 오류 처리]; -선택
END;

Hello PL/SQL 출력해보기

SET SERVEROUTPUT ON; --실행 결과를 화면에 출력
BEGIN 
 DBMS_OUTPUT.PUT_LINE('Hello, PL/SQL');
END;
/

03 PL/SQL문의 실행할 때 주의할 점

  • DECLARE, BEGIN, EXCEPTION 키워드엔 세미클론;을 넣지 않는다
  • 실행해야하는 문장 끝엔 세미콜론;을 넣는다
  • 작성을 마치고 실행하기 위해선 슬래시/를 넣는다


2. 변수?

  • 변수를 사용하는 이유
    • 데이터를 임시로 저장하기 위해서
    • 저장된 값을 조작하기 위해서
    • 저장된 데이터를 재사용할 수 있도록 하기 위해서

01. 변수선언

  • 스칼라형
    PL/SQL에서 변수를 선언할 때 사용되는 데이터 타입은 SQL에서 사용하던 데이터 타입과 유사합니다. 숫자 문자 날짜 BOOLEAN 4가지로 나뉩니다.

  • 참조형
    참조형은 오라클 데이터베이스에 존재하는 특정 테이블 열의 자료형이나 행 구절을 참조하는 자료형
    %TYPE은 열을 참조하고 %ROWTYPE은 행을 참조할 때 사용한다
%TYPE = 변수이름 테이블이름.열이름%TYPE;
%ROWTYPE = 변수이름 테이블이름%ROWTYPE;

02. 예제

사원번호와 사원이름 출력 예제

set serveroutput on
declare
    v_eno employee.eno%type;
    v_ename employee.ename%type;
begin
    dbms_output.put_line('사원번호  사원이름');
    dbms_output.put_line('-------------------');
    select eno,ename into v_eno, v_ename from employee
    where ename='SCOTT';
    dbms_output.put_line(v_eno ||' '||v_ename);
end;
/

부서번호가 40인 부서이름과 지역을 찾으시오

SET SERVEROUTPUT ON
DECLARE
 V_DEPT_ROW DEPT%ROWTYPE;
 BEGIN 
 SELECT DEPTNO, DNAME, LOC INTO V_DEPT_ROW
   FROM DEPT 
   WHERE DEPTNO = 40;
   DBMS_OUTPUT.PUT_LINE('DEPTNO : ' || V_DEPT_ROW.DEPTNO);
   DBMS_OUTPUT.PUT_LINE('DNAME : ' || V_DEPT_ROW.DNAME);
   DBMS_OUTPUT.PUT_LINE('LOC : ' || V_DEPT_ROW.LOC);
   END;
   /

0개의 댓글