티스토리 뷰

공부/SQL

[SQL]PL/SQL - 1

kd0547 2023. 6. 16. 16:28

 

PL/SQL에서 블록(Block)은 프로그램의 실행 단위를 나타내는 구조입니다. 블록은 크게 선언부(Declaration Section), 실행부(Execution Section), 예외 처리부(Exception Handling Section)로 구성됩니다.

 

  • DECLARE(선언부) :  블록의 시작 부분에 위치하며, 변수, 상수, 타입, 예외 등의 선언이 이루어집니다. 이 섹션에서는 프로그램 실행에 필요한 객체들을 사전에 정의합니다.
  • BEGIN(실행부): 선언부 다음에 위치하며, 실제로 실행되는 코드들이 포함됩니다. 주요한 제어 구문인 조건문(if-then-else, case), 반복문(loop, while, for), SQL 문장 등이 실행부에 포함됩니다.
  • EXCEPTION(예외 처리부): 예외 상황을 처리하기 위한 코드들이 이루어집니다. 예외 처리 부분은 예외가 발생할 수 있는 부분을 감지하고, 예외가 발생한 경우에 대한 처리 방법을 정의합니다.
DECLARE
   -- 선언부
   -- [실행에 필요한 여로 요소 선언];
BEGIN
   -- 실행부
   -- [작업을 위해 실제 실행하는 명령어];
EXCEPTION
   -- 예외 처리부
   -- [PL/SQL 수행 도중 발생하는 오류 처리];
END;

선언부와 예외 처리부는 생략 가능하지만 샐행부는 반드시 존재해야합니다. 필요에 따라 PL/SQL 블록 안에 다른 블록을 포함할 수 있습니다.

 

변수와 상수

기본 변수 선언과 사용

변수이름 자료형 := 값 또는 값이 도출되는 여러 표현식;

 

DECLARE
	V_EMPNO NUMBER(4) := 7788;
	V_ENAME VARCHAR(10);
BEGIN
	V_ENAME := 'SCOTT';
	DBMS_OUTPUT.PUT_LINE('V_ENAME :' || V_ENAME);
END;
V_ENAME :SCOTT

선언부(DECLARE)에서 V_EMPNO 변수를 NUMBER(4) 타입으로 선언하고 초기값 7788을 할당하고, V_ENAME 변수를 VARCHAR(10) 타입으로 선언합니다. 실행부(BEGIN)에서 V_ENAME 변수에 'SCOTT'라는 문자열을 할당합니다.
DBMS_OUTPUT.PUT_LINE을 사용하여 'V_ENAME : SCOTT'라는 메시지를 출력합니다.

 

변수의 기본값 지정하기

DEFAULT 키워드는 변수에 지정할 기본값을 지정합니다.

변수이름  자료형 DEFAULT [값 또는 값 도출되는 여러 표현식];

 

DECLARE
	V_DEPTNO NUMBER(2) DEFAULT 10;
BEGIN
	DBMS_OUTPUT.PUT_LINE('V_DEPTNO :' || V_DEPTNO);
END;
V_DEPTNO :10

 

변수에  NULL값 저장 막기 

특정 변수에 NULL이 저장되지 않게 하려면 NOT NULL 키워드를 사용합니다. 선언한 변수는 특정 값을 할당하지 않으면 NULL 값이 기본으로 할당됩니다. NOT NULL 키워드를 사용하면 변수는 반드시 선언과 동시에 특정 값을 지정해 주어야 합니다. 

변수이름  자료형 NOT NULL := 또는 DEFAULT 값 또는 값이 도출되는 여러 표현식;

 

DECLARE
	V_DEPTNO1 NUMBER(2) NOT NULL DEFAULT 10;
	V_DEPTNO2 NUMBER(2) NOT NULL := 10;
	V_DEPTNO3 NUMBER(2);
BEGIN
	DBMS_OUTPUT.PUT_LINE('V_DEPTNO1 :' || V_DEPTNO1);
	DBMS_OUTPUT.PUT_LINE('V_DEPTNO2 :' || V_DEPTNO2);
	DBMS_OUTPUT.PUT_LINE('V_DEPTNO3 :' || V_DEPTNO3);
END;
V_DEPTNO1 :10
V_DEPTNO2 :10
V_DEPTNO3 :

 

상수 정의 

상수는 지정한 값이 프로그램이 존료될 때까지 유지되는 저장요소입니다. 상수를 선언할 때 기존 변수 선언에 CONSTANT 키워드를 지정합니다. 

변수이름 CONSTANT 자료형 := 값 또는 값이 도출되는 여러 표현식;

 

DECLARE
	V_TAX CONSTANT NUMBER(1) := 3;
BEGIN
	DBMS_OUTPUT.PUT_LINE('V_TAX :' || V_TAX);
END;
V_TAX :3

 

변수의 자료형 

PL/SQL에서 사용할 수 있는 자료형은 다음과 같이 크게 세 가지가 있습니다.

 

스칼라형

스칼라형은 숫자, 문자열, 날짜 등과 같이 오라클에서 기본으로 정의해 놓는 자료형으로 내부 구성요소가 없는 단일 값을 의미합니다.

  • 숫자 : NUMBER, BINARY_INTEGER, PLS_INTEGER
  • 문자 : CHAR, VARCHAR2, NCHAR, NVARCHAR2
  • 날짜 : DATE, TIMESTAMP
  • 논리 데이터 : BOOLEAN

참조형

참조형은 오라클 데이터베이스에서 존재하는 특정 테이블 열의 자료형이나 하나의 행 구조를 참조하는 자료형입니다.

열을 참조할 때 %TYPE, 행을 참조할 때 %ROWTYPE을 사용합니다. 

 

변수이름 테이블이름. 열 이름%TYPE;
DECLARE
	V_EMPLOYEES_ID EMPLOYEES.EMPLOYEE_ID%TYPE := 110;
BEGIN
	DBMS_OUTPUT.PUT_LINE('V_EMPLOYEES_ID :' || V_EMPLOYEES_ID);
END;
V_EMPLOYEES_ID :110

EMPLOYEES 테이블의 EMPLOYEE_ID이 NUMBER 타입이니  V_EMPLOYEES_ID의 타입은 NUMBER이 되고 V_EMPLOYEES_ID에 110을 저장합니다. 

 

 

변수이름 테이블이름 이름%ROWTYPE;
DECLARE
	V_EMP_ROW EMPLOYEES%ROWTYPE;
BEGIN
	SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME 
	INTO V_EMP_ROW.EMPLOYEE_ID,V_EMP_ROW.FIRST_NAME,V_EMP_ROW.LAST_NAME
		FROM EMPLOYEES e
	WHERE EMPLOYEE_ID = 50; 
	
	DBMS_OUTPUT.PUT_LINE('V_EMPLOYEES_ID :' || V_EMP_ROW.EMPLOYEE_ID);
	DBMS_OUTPUT.PUT_LINE('FIRST_NAME :' || V_EMP_ROW.FIRST_NAME);
	DBMS_OUTPUT.PUT_LINE('LAST_NAME :' || V_EMP_ROW.LAST_NAME);
END;
V_EMPLOYEES_ID :50
FIRST_NAME :Mia
LAST_NAME :West

DECLARE에서 V_EMP_ROW라는 변수를 EMPLOYEES 테이블의 ROWTYPE으로 선언합니다. 이렇게 선언된 변수는 EMPLOYEES 테이블과 동일한 구조를 가지는 레코드를 저장할 수 있습니다. SELECT 문을 사용하여 EMPLOYEE_ID, FIRST_NAME, LAST_NAME을 조회하고 INTO 절을 사용하여 V_EMP_ROW 변수에 저장합니다.

실행 시, EMPLOYEES 테이블에서 EMPLOYEE_ID가 50인 사원의 정보가 V_EMP_ROW 변수에 저장되고, 해당 정보가 출력됩니다. 

 

'공부 > SQL' 카테고리의 다른 글

[SQL]PL/SQL - 3 반복제어문  (0) 2023.06.16
[SQL]PL/SQL - 2 조건 제어문  (0) 2023.06.16
날짜 관련 함수  (0) 2023.06.14
오라클 숫자 관련 함수  (0) 2023.06.14
오라클 문자 관련 함수  (0) 2023.06.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함