Oracle Database 강좌/4. PL SQL

변수 선언 및 할당: 변수의 종류와 사용법

_Blue_Sky_ 2024. 10. 7. 13:03
728x90
728x90

PL/SQL 변수 선언 및 할당: 자세한 설명과 다양한 예시

 

PL/SQL(Procedural Language/SQL)은 Oracle 데이터베이스에서 SQL의 기능을 확장하여 복잡한 로직을 구현할 수 있도록 해주는 프로그래밍 언어입니다. PL/SQL에서 변수는 데이터를 임시로 저장하고 조작하는 데 사용되는 메모리 공간을 의미하며, 프로그램의 흐름을 제어하는 데 중요한 역할을 합니다. 이 글에서는 PL/SQL 변수의 종류, 선언 방법, 할당 방법, 그리고 다양한 사용법에 대해 자세히 알아보겠습니다.

변수의 종류

PL/SQL 변수는 크게 스칼라 변수복합 변수로 나눌 수 있습니다.

  • 스칼라 변수: 하나의 값만 저장하는 가장 기본적인 변수입니다. 숫자, 문자, 날짜 등 다양한 데이터 타입을 가질 수 있습니다.
    • 숫자형: NUMBER, INTEGER, DECIMAL 등
    • 문자형: VARCHAR2, CHAR
    • 날짜형: DATE
    • 논리형: BOOLEAN
  • 복합 변수: 여러 개의 값을 저장하는 변수로, 레코드형과 배열형이 있습니다.
    • 레코드형: 여러 개의 스칼라 변수를 하나의 논리적인 단위로 묶은 것으로, 테이블의 한 행과 유사합니다.
    • 배열형: 동일한 데이터 타입의 값을 여러 개 저장할 수 있는 변수입니다.
728x90

변수 선언

변수를 사용하기 전에 먼저 선언해야 합니다. 변수 선언 시에는 변수의 이름과 데이터 타입을 지정합니다.

DECLARE
  v_emp_no NUMBER(4);  -- 사원번호를 저장할 숫자형 변수
  v_emp_name VARCHAR2(20);  -- 사원 이름을 저장할 문자형 변수
  v_hiredate DATE;  -- 입사일을 저장할 날짜형 변수
BEGIN
  -- 실행문
END;
/
 
  • DECLARE: 변수 선언 부분을 시작하는 키워드
  • 변수 이름: 식별자 규칙에 따라 지정하며, 의미 있는 이름을 사용하는 것이 좋습니다.
  • 데이터 타입: 저장할 데이터의 종류를 지정합니다.
  • BEGIN...END: 실행문을 포함하는 블록

변수에 값 할당

선언된 변수에 값을 할당하는 방법에는 다음과 같은 방법들이 있습니다.

  • := 연산자: 가장 일반적인 할당 방법입니다.
v_emp_no := 7369;
v_emp_name := 'SMITH';
 
  • DEFAULT 키워드: 변수 선언과 동시에 초기값을 설정할 수 있습니다.
v_dept_no NUMBER(2) DEFAULT 10;
 
  • SELECT INTO: SQL 쿼리 결과를 변수에 할당합니다.
SELECT employee_id INTO v_emp_no
  FROM employees
 WHERE last_name = 'KING';
 

변수의 사용

변수는 PL/SQL 블록 내에서 다양하게 사용될 수 있습니다.

  • 연산: 산술 연산, 비교 연산 등 다양한 연산의 피연산자로 사용됩니다.
v_salary := v_salary * 1.1;  -- 급여 10% 인상
 
  • 조건문: IF, CASE 등 조건문의 조건식에서 사용됩니다.
IF v_salary > 10000 THEN
  -- 급여가 10000 이상인 경우
END IF;
 
  • 반복문: LOOP, FOR 등 반복문의 조건식이나 반복 횟수를 지정하는 데 사용됩니다.
FOR i IN 1..10 LOOP
  -- 1부터 10까지 반복
END LOOP;
 
  • 함수 호출: 함수의 인수로 전달되거나, 함수의 반환값으로 사용됩니다.
  • 프로시저 호출: 프로시저의 인수로 전달되거나, 프로시저 내에서 값이 변경되어 반환됩니다.

복합 변수

  • 레코드형 변수:
DECLARE
  TYPE emp_rec IS RECORD (
    emp_no NUMBER(4),
    emp_name VARCHAR2(20),
    salary NUMBER(8,2)
  );
  v_emp emp_rec;
BEGIN
  v_emp.emp_no := 7369;
  v_emp.emp_name := 'SMITH';
  v_emp.salary := 800;
END;
/
 
  • 배열형 변수:
DECLARE
  TYPE num_array IS TABLE OF NUMBER(2) INDEX BY PLS_INTEGER;
  v_nums num_array;
BEGIN
  v_nums(1) := 10;
  v_nums(2) := 20;
  v_nums(3) := 30;
END;
/
 

결론

PL/SQL 변수는 데이터를 저장하고 조작하는 데 필수적인 요소입니다. 다양한 종류의 변수를 적절히 활용하여 복잡한 로직을 구현할 수 있습니다. 이 글을 통해 PL/SQL 변수에 대한 이해를 높이고, 실제 개발에 활용할 수 있기를 바랍니다.

728x90
728x90