728x90
반응형
PL/SQL
Procedural Language extension to SQL
SQL만으로는 구형이 어렵거나 구현 불가능한 작업을 수행하기 위해 오라클에서 제공하는 프로그래밍 언어이다.
변수, 조건, 반복 처리 등 다양한 기능을 사용할 수 있다.
Block 이란?
PL/SQL은 데이터베이스 관련 특정 작업을 수행하는 명령어와 실행에 필요한 여러 요소를 정의하는 명령어 등으로 구성된다. 이러한 명령어들을 모아 둔 PL/SQL 프로그램의 기본 단위를 블록이라고 한다.
[형식]
DECLARE
선언부 - 변수, 상수, 커서 등을 선언 (생략가능)
BEGIN
실행하는 명령어
EXCEPTION
예외처리(생략가능)
END;
DECLARE, BEGIN, EXCEPTION에는 ;(세미콜론)을 사용하지 않는다.
SET SERVEROUTPUT ON; -- PL/SQL 결과를 화면에 출력
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO PL/SQL');
END;
/ -- CMD 창에서 실행할 때
[출력화면]
HELLO PL/SQL
/ 를 마지막에 넣어줘야지 아래에서 다른 구문을 실행할 때 같이 되지 않는다.
변수
데이터를 일시적으로 저장하는 요소
선언부(CELARE - BEGIN)에서 작성
변수에 값 할당하는 방법
변수명 := 값
변수 | |
스킬라형 | 숫자, 문자열, 날짜 등과 같이 오라클에서 기본으로 정의해 놓은 자료형 NUMBER : 소수점을 포함할 수 있는 최대 38자리 숫자 데이터 CHAR / VARCHAR2 DATE BOOLEAN |
참조형 | 오라클 데이터베이스에 존재하는 특정 데이터 열의 자료형이나 하나의 행 구조를 참조하는 자료형 열 참조 : %TYPE 행 참조 : %ROWTYPE 변수명 테이블명.열이름%TYPE 변수명 테이블명.%ROWTYPE |
복합형 | 여러 종류 및 개수의 데이터를 저장하기 위해 사용자가 직접 정의하는 자료형 컬렉션, 레코드로 구분한다. |
LOB형 | 대용량의 텍스트, 이미지, 동영상, 사운드 데이터 등 대용량 데이터를 저장하기 위한 자료형 BLOB, CLOB 등 |
예시
DECLARE
NAME VARCHAR2(10);
AGE TEST_TABLE.NUMBER%TYPE := 5;
BEGIN
NAME := '홍길동';
DBMS_OUTPUT.PUT_LINE('NAME : ' || NAME);
DBMS_OUTPUT.PUT_LINE('AGE : ' || AGE);
END;
NAME은 VARCHAR(10) 변수형으로 선언.
AGE는 TEST_TABLE테이블에 NUMBER라는 컬럼의 변수형과 동일하게 적용하고 5의 값을 저장
DBMS_OUTPUT.PUT_LINE() : PL/SQL에서 화면에 출력하는 구문
형식 | 의미 | |
상수 | 변수명 CONSTANT 자료형 := 값 또는 표현식 | 한번 저장한 값이 프로그램이 종료될 때까지 변하지 않는다. |
변수의 기본값 지정 | 변수명 자료형 DEFAULT 값 또는 표현식 | 해당 값 또는 표현식을 기본값으로 지정한다. |
변수에 NULL 값 막기 | 변수명 자료형 NOT NULL := 값 또는 표현식 | 해당 변수에는 NULL값이 들어오지 못하게 막는다. |
조건 제어문
조건 제어문 | 형식 | |
IF문 | IF - THEN - END IF; IF - THEN - ELSE - END IF; IF - THEN - ELSIF - END IF; |
|
CASE문 | CASE 비교기준 WHEN 값1 THEN 명령어; WHEN 값2 THEN 명령어; ELSE 명령어; END CASE; |
CASE WHEN 조건1 THEN 명령어; WHEN 조건2 THEN 명령어; ELSE 명령어; END CASE; |
DECLARE
NUM NUMBER := 16;
BEGIN
IF NUM <= 0 THEN
DBMS_OUTPUT.PUT_LINE(NUM || ' : 음수');
ELSIF MOD(NUM, 2)=0 THEN
DBMS_OUTPUT.PUT_LINE(NUM || ' : 짝수');
ELSE
DBMS_OUTPUT.PUT_LINE(NUM || ' : 홀수');
END IF
END;
DECLAER
SCORE NUMBER := 85;
GRADE VARCHAR2(10);
BEGIN
CASE
WHEN SCORE >= 90 THEN GRAGE := 'A';
WHEN SCORE >= 80 THEN GRAGE := 'B';
WHEN SCORE >= 70 THEN GRAGE := 'C';
WHEN SCORE >= 60 THEN GRAGE := 'D';
ELSE GRAGE := 'F';
END CASE;
END;
반복 제어문
반복 제어문 | 형식 | |
기본 LOOP | LOOP 명령어; END LOOP; |
|
WHILE LOOP | WHILE 조건 LOOP 명령어; END LOOP; |
|
FOR LOOP | 기본 FOR i IN 시작값 .. 종료값 LOOP 명령어; END LOOP; 역순( i -- ) FOR i IN REVERSE 시작값 .. 종료값 LOOP 명령어; END LOOP; |
역순으로 출력할 때, REVERSE 시작..끝 위치는 변하지 않는다 |
CUSOR FOR LOOP | EXIT EXIT THEN CONTINUE CONTINUE |
반복문을 중단 / 특정 반복 주기를 건너뛰는 명령어 |
728x90
반응형
'Database > Oracle' 카테고리의 다른 글
Oracle, 저장 서브 프로그램 (0) | 2024.08.22 |
---|---|
Oracle, View 란? (뷰 형식, 제약조건, 뷰-인라인, Top N분석) (0) | 2024.08.21 |
Oracle, 테이블 생성 / 삽입, 삭제, 수정 / 복사 / 시퀀스 (0) | 2024.08.20 |
Oracle, [SET operator] - 집합연산자, 하위질의 (SubQuery) (0) | 2024.08.20 |
Oracle, Join이란 ? (0) | 2024.08.19 |