[데이터 엔지니어링/SQL] - [PL/SQL] 프로시저의 주요 기능
변수 선언
변수 선언은 지정된 데이터 유형의 값에 대한 저장 공간을 할당하고 참조할 수 있도록 저장 위치의 이름을 지정한다.
- NOT NULL
- 스칼라 변수나 상수에 NOT NULL 제약 조건을 넣을 수 있다.
- 이는 항목에 NULL 값을 할당하는 것을 방지한다.
- 프로시저는 길이가 0인 문자열을 NULL값으로 처리한다.
- 변수 선언
- 변수의 이름과 데이터의 유형을 지정한다.
- 변수 선언시 초기 값을 지정할 수도 있다.
- 값의 변경이 가능하다.
- 상수 선언
- 변하지 않는 값을 보유한다.
- 초기값이 필요하다.
변수에 값 할당
변수와 값은 호환 가능한 데이터 유형을 가져야 한다. 데이터의 유형은 암시적으로 해당 유형으로 변환될 수 있는 경우 다른 데이터 유형과 호환된다.
-- 1. 할당 문을 사용하여 변수에 값 할당
variable_name := expression;
-- 2. SELECT INTO문을 사용하여 변수에 값 할당.
-- 각각에 대해 select_item에 해당하는 유형이 호환되야한다.
SELECT select_item [, select_item] ...
INTO variable_name [, variable_name] ...
FROM table_name
;
-- 3. 서브 프로그램의 매개변수로 변수에 값 할당.
-- 서브 프로그램에 변수를 OUT 또는 IN OUT 매개변수로 전달하고
-- 서브 프로그램이 매개변수에 값을 할당하는 경우 서브프로그램 실행이 완료된 이후에도
-- 변수는 해당 값을 유지한다.
DECLARE
emp_salary NUMBER(8,2);
PROCEDURE adjust_salary (
emp NUMBER,
sal IN OUT NUMBER,
adjustment NUMBER
) IS
BEGIN
sal := sal + adjustment;
END;
BEGIN
SELECT salary INTO emp_salary
FROM employees
WHERE employee_id = 100;
# 아래 라인에서 만약 emp_salary 가 5000으로
# Before invoking procedure, emp_salary : 5000
# 위와 같았다면
DBMS_OUTPUT.PUT_LINE
('Before invoking procedure, emp_salary: ' || emp_salary);
adjust_salary (100, emp_salary, 1000);
# 위 adjust_salary 프로시저를 수행하고 나서는
# Aftoer invoking procedure, emp_salary : 6000
# 으로 나올것이다.
DBMS_OUTPUT.PUT_LINE
('After invoking procedure, emp_salary: ' || emp_salary);
END;
/
'데이터 엔지니어링 > SQL' 카테고리의 다른 글
[PL/SQL] 프로시저의 주요 기능 (1) | 2023.11.01 |
---|---|
[PL/SQL] 프로시저란? 프로시저의 장/단점 (0) | 2023.10.31 |