PL/SQL 구조
PL/SQL은 데이터베이스 관련 작업을 수행하는 명령어와 실행에 필요한 요소를 정의하는 명령어들로 구성됩니다. 이 명령어들을 모아둔 기본 단위가 블록(block)입니다.
블록의 구성 키워드는 다음과 같습니다:
- DECLARE(선언부): 실행에 사용될 변수, 상수, 커서 등을 선언하는 부분 (선택)
- BEGIN(실행부): 조건문, 반복문, SELECT, DML, 함수 등을 정의하는 부분 (필수)
- EXCEPTION(예외 처리부): 실행 도중 발생하는 오류를 해결하는 문장을 기술하는 부분 (선택)
작성된 PL/SQL 블록은 END
키워드로 종료를 명시합니다. 기본 형식은 다음과 같습니다:
DECLARE
[ 실행에 필요한 여러 요소 선언 ];
BEGIN
[ 작업을 위해 실제 실행하는 명령어 ];
EXCEPTION
[ PL/SQL 수행 도중 발생하는 오류 처리 ];
END;
선언부와 예외 처리부는 생략 가능하지만 실행부는 반드시 존재해야 합니다. 필요에 따라 블록 안에 다른 블록을 포함하는 중첩 블록(nested block)도 가능합니다.
HELLO, PL/SQL 출력하기
PL/SQL 실행 결과를 화면에 출력하려면 SERVEROUTPUT
환경 변수 값을 ON
으로 변경해야 합니다. 오라클에서 기본 제공하는 DBMS_OUTPUT
패키지의 PUT_LINE
을 사용하여 화면에 출력을 할 수 있습니다.
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO, PL/SQL');
END;
/
PL/SQL 변수와 상수
변수 선언과 값 대입하기
변수는 데이터를 일시적으로 저장하는 요소입니다. 변수의 이름과 자료형을 지정하여 선언부(DECLARE)에 작성하며, 실행부(BEGIN)에서 활용합니다.
DECLARE
변수이름 자료형 := 값;
BEGIN
DBMS_OUTPUT.PUT_LINE(변수이름);
END;
/
상수 정의하기
상수는 한 번 저장된 값이 프로그램이 종료될 때까지 유지됩니다. 상수는 CONSTANT
키워드를 사용하여 선언합니다.
DECLARE
상수이름 CONSTANT 자료형 := 값;
BEGIN
DBMS_OUTPUT.PUT_LINE(상수이름);
END;
/
변수의 기본값 지정하기
DEFAULT
키워드를 사용하여 변수에 기본값을 지정할 수 있습니다.
DECLARE
변수이름 자료형 DEFAULT 값;
BEGIN
DBMS_OUTPUT.PUT_LINE(변수이름);
END;
/
변수에 NULL 값 저장 막기
특정 변수에 NULL
이 저장되지 않게 하려면 NOT NULL
키워드를 사용합니다.
DECLARE
변수이름 NOT NULL 자료형 := 값;
BEGIN
DBMS_OUTPUT.PUT_LINE(변수이름);
END;
/
변수의 자료형
변수에 저장할 데이터의 종류를 특정짓기 위해 사용하는 자료형은 크게 스칼라(scalar), 복합(composite), 참조(reference), LOB(Large Object)로 구분됩니다.
스칼라형
스칼라형은 단일 값을 의미하며, 숫자, 문자열, 날짜, 논리 데이터로 나뉩니다.
- 숫자: NUMBER
- 문자열: CHAR, VARCHAR2
- 날짜: DATE
- 논리 데이터: BOOLEAN
참조형
참조형은 데이터베이스에 존재하는 특정 테이블 열의 자료형이나 하나의 행 구조를 참조합니다. 열을 참조할 때는 %TYPE
, 행을 참조할 때는 %ROWTYPE
을 사용합니다.
DECLARE
변수이름 테이블이름.열이름%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE(변수이름);
END;
/
DECLARE
변수이름 테이블이름%ROWTYPE;
BEGIN
SELECT 열이름 INTO 변수이름 FROM 테이블이름 WHERE 조건;
DBMS_OUTPUT.PUT_LINE(변수이름.필드이름);
END;
/
복합형과 LOB형
복합형은 사용자 정의 자료형으로, 여러 종류 및 개수의 데이터를 저장할 수 있습니다. LOB형은 대용량 데이터를 저장하기 위한 자료형입니다. 대표적으로 BLOB, CLOB 등이 있습니다.
위와 같은 구조와 내용을 바탕으로 PL/SQL을 작성하고 활용할 수 있습니다. PL/SQL의 다양한 기능을 이해하고 활용함으로써 데이터베이스 관련 작업을 효율적으로 처리할 수 있습니다.
'Be Smart > SQL' 카테고리의 다른 글
[오라클] PL/SQL 저장 서브 프로그램: 효율적인 데이터베이스 관리의 핵심 (0) | 2024.07.01 |
---|---|
[오라클] Oracle PL/SQL 조건 제어문과 반복 제어문 완벽 가이드 (0) | 2024.06.20 |
오라클 PL/SQL 예외 처리: 오류 발생 시 프로그램 비정상 종료 방지 방법 (1) | 2024.06.13 |
[Oracle] HackerRank 문제 정리 - 6 (0) | 2022.08.10 |
[오라클] 그룹함수 over, partition by (0) | 2022.08.10 |
댓글