[PL/SQL] 변수 선언

2022. 7. 19. 09:09·Back-End/PL SQL

PL/SQL 기본 단위 블록

  1. 선언부(Declare) : 실행부에서 사용할 변수, 상수 선언
  2. 실행부 (BEGIN ~ END) : 실제 처리할 로직 , 여러 개의 SQL문을 순차적으로 처리 가능
    • TRY ~ CATCH문 처럼 예외를 잡는 용도로 많이 사용한다.
  3. 예외처리부 (Exception) : 실행부 로직 처리 중 발생되는 오류를 처리
CREATE OR REPLACE PROCEDURE 프로시져명 
(파라미터1 IN | OUT | IN OUT
,파라미터2 IN | OUT | IN OUT...);

IS[AS]
변수, 상수 등을 선언

BEGIN  --프로시저로직의 시작
로직을 실행할 쿼리문

[EXCEPTION 예외처리]

END 프로시져 명;

PL/SQL 변수, 상수, %TYPE 선언

  • 선언부에서 변수 선언 및 초기화
  • 실행부에서 변수에 새로운 값 지정
  • 출력 변수를 이용해서 결과 출력

1. 변수 선언

v_gender CHAR(10);        -- v_gender의 경우 초기값설정을 안했으므로 NULL이다
v_count NUMBER(100);      -- NUMBER변수 v_gender 초기값X(NULL)
v_sal INTEGER := 1000;    -- INTEGER 변수 v_sal 초기값 1000 설정

2. 상수 선언

c_female constant char(1) := 'F' -- c_female 상수 값 F로 고정

3. %TYPE

💡 [문법]

변수명 테이블명.컬럼명%TYPE;

  • 선언한 테이블의 컬럼타입과 같은 타입으로 설정
  • 오라클 서버가 실행 시점에 변수의 데이터 타입과 크기를 결정한다.
DECLARE  
    v_last_name s_emp.last_name%TYPE;   --s_emp테이블의 last_name컬럼과 같은 데이터타입으로 설정된다.
    v_first_name s_emp.first_name%TYPE; --s_emp테이블의 first_name컬럼과 같은 데이터타입으로 설정된다.
BEGIN 
    SELECT last_name, first_name 
    INTO v_last_name, v_first_name 
    FROM s_emp 
    WHERE  id = 1; 
    DBMS_OUTPUT.PUT_LINE(v_last_name); 
    DBMS_OUTPUT.PUT_LINE(v_first_name); 
END; 
/

장점

  • 데이터베이스 컬럼의 데이터 타입을 정확히 알지 못해도 사용가능
  • 설정한 데이터베이스 컬럼의 데이터 타입이 변경되어도 수정할 필요가 없다.

주의할점

  • NOT NULL Column 제약조건은 %TYPE을 써서 선언한 변수에는 적용X

4. %ROWTYPE

  • 테이블이나 뷰의 하나이상의 컬럼들에 대해 변수 선언
  • 테이블명을 접두어로 표기
  • 자바의 Bean Object
DECLARE  
    employee_record   s_emp%ROWTYPE;  -- s_emp 테이블의 데이터를 employee_record에 할당
BEGIN 
    SELECT * 
    INTO employee_record 
    FROM s_emp 
    WHERE  id = 1;                    -- s_emp 테이블에서 id가 1인 값
    DBMS_OUTPUT.PUT_LINE(employee_record.last_name);  
    DBMS_OUTPUT.PUT_LINE(employee_record.first_name); 
    DBMS_OUTPUT.PUT_LINE(employee_record.salary); 
END; 
/
반응형
'Back-End/PL SQL' 카테고리의 다른 글
  • [PL/SQL] 커서(CURSOR), 예외(Exception)
  • [PL/SQL] 프로시저(Procedure)란?
LightSource
LightSource
어제보단 발전한 오늘의 나를 위한 블로그
    반응형
  • LightSource
    LightSourceCoder
    LightSource
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • Git (4)
      • Language (6)
        • Java (6)
      • Back-End (63)
        • Spring Boot (4)
        • MyBatis (1)
        • Oracle (1)
        • PL SQL (3)
        • JPA (26)
        • Spring Data JPA (5)
        • Spring MVC (8)
        • Spring (12)
        • Spring Security (2)
        • Redis (1)
      • Front-End (38)
        • 아이오닉 (2)
        • JSP (7)
        • JavaScript (4)
        • React (16)
        • TypeScript (3)
        • Angular (6)
      • AWS (1)
      • CI & CD (1)
      • 개발지식 (13)
        • 네트워크 (9)
        • CS 지식 (4)
      • 데이터모델링 (2)
      • Tool (1)
      • 프로젝트 (5)
      • 독후감 (2)
      • 잡생각 (0)
      • 면접 준비 (1)
      • 알고리즘 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    배요소열추가
    배열요소수정
    배열요소삭제
    리액트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
LightSource
[PL/SQL] 변수 선언
상단으로

티스토리툴바