Oracle - PL/SQL

PL/SQL

Prodedural Language Extensin To SQL : SQL에 대한 절차적 언어 확장

 

오라클 자체에 내장되어 있는 절차적 언어

SQL 문장 내에서 변수의 정의, 조건 처리(if), 반복 처리(loop, for, while) 등을 지원하여 SQL의 단점을 보완

 

* PL/SQL 구조

- 선언부 (DECLARE SECTION) : DECLARE로 시작, 변수나 상수를 선언하는 부분
- 실행부 (EXECUTABLE SECTION) : BEGIN으로 시작, 제어문, 반복문, 함수 등의 로직을 기술
- 예외처리부 (EXCEPTION SECTION) : EXCEPTION으로 시작, 예외 상황 발생 시 해결하기 위한 문장

 

Hello world 출력

BEGIN 
     DBMS_OUTPUT.PUT_LINE('HELLO WORLD');
END;

출력하게되면 HELLO WORLD가 출력이안되고 

아래와 같이만 출력이된다.. 

이유는 프로시저 사용 시 출력하는 내용을 화면에 보여주도록 설정하는 환경변수를 ON시켜줘야한다

 

-- HELLO WORLD 출력 되지 않는 이유
-- 프로시저 사용 시 출력하는 내용을 화면에 보여주도록 설정하는 환경변수를 ON 시켜주어야 함
-- (기본값 OFF)
SET SERVEROUTPUT OFF;

 

 

DECLARE

타입 변수 선언

변수의 선언 및 초기화, 변수 값 출력

[표현식] 변수명 자료형([크기]);
DECLARE --> 선언부 시작을 알리는 구문
    EMP_ID NUMBER; --> NUMBER 타입의 변수 EMP_ID 선언
    EMP_NAME VARCHAR2(30); --> VARCHAR2 타입의 변수 EMP_NAME 선언
    PI CONSTANT NUMBER := 3.14; --> NUMBER 타입의 상수 PI 선언 및 초기화
BEGIN --> 실행부 시작을 알리는 구문
    EMP_ID := 888; --> EMP_ID 변수에 값을 888로 초기화
    EMP_NAME := '배장남'; --> EMP_NAME 변수에 값을 '배장남'으로 초기화
--    PI := 3.15; --> 상수 값은 초기화 된 뒤 다시 값 대입 불가
    
    -- 변수출력 (문자열 연결 연산자 ||)
    DBMS_OUTPUT.PUT_LINE('EMP_ID : ' || EMP_ID);
    DBMS_OUTPUT.PUT_LINE('EMP_NAME : ' || EMP_NAME);
    DBMS_OUTPUT.PUT_LINE('PI : ' || PI);
END;
/

 

레퍼런스 변수의 선언과 초기화, 변수값 출력

-- [표현식] 변수명 테이블명.컬럼명%TYPE
DECLARE
    EMP_ID EMPLOYEE.EMP_ID%TYPE;
    --> 변수 EMP_ID의 타입을 EMPLOYEE 테이블의 EMP_ID 컬럼이 가진 타입으로 지정
    EMP_NAME EMPLOYEE.EMP_NAME%TYPE;
    --> 변수 EMP_NAME의 타입을 EMPLOYEE 테이블의 EMP_NAME 컬럼이 가진 타입으로 지정
BEGIN
    SELECT EMP_ID, EMP_NAME --> 테이블에서 SELECT 된 값
      INTO EMP_ID, EMP_NAME --> DECLARE에서 선언한 변수에 넣는다.
      FROM EMPLOYEE
      WHERE EMP_ID = '&ID';
      -- '&' 기호가 있는 문자열은 대체변수를 입력(갑을이력)하라는 의미
      
      DBMS_OUTPUT.PUT_LINE('EMP_ID : ' || EMP_ID);
      DBMS_OUTPUT.PUT_LINE('EMP_NAME : ' || EMP_NAME);
END;
/

 

 

계속 작성예정

'프로그래밍 > Database(Oracle)' 카테고리의 다른 글

Oracle - SYNONYM(동의어)  (0) 2021.07.07
Oracle - INDEX  (0) 2021.07.07
Oracle - DCL(GRANT, REVOKE)  (0) 2021.07.06
Oracle - 시퀀스(sequence)  (0) 2021.07.06
Oracle - view  (0) 2021.07.06
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유