오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 절차적 프로그래밍 언어
SQL 문장 내에서 변수 정의, 조건 처리(IF), 반복 처리(LOOP, FOR, WHILE) 등을 지원
PL/SQL의 구조
PL/SQL의 장점
📍 PL/SQL 작성 예시
▪ 프로시저 사용 시 출력하는 내용을 화면에 보여주도록 설정하는
환경 변수를 ON으로 변경 (기본 값 : OFF)
SET SERVEROUTPUT ON;
▪ 화면에 'HELLO WORLD' 출력
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO WORLD');
END;
/
⭐ END 뒤 '/' 기호는 PL/SQL을 종결시킨다는 의미!
DECLARE -- 선언부
ST_ID NUMBER;
ST_NAME VARCHAR2(30);
DEPT VARCHAR2(30) := '경영정보'; -- 대입 연산자 (:=)
PI CONSTANT NUMBER := 3.141592; -- 상수 (CONSTANT)
BEGIN -- 실행부
ST_ID := 10955;
ST_NAME := '하람코';
DBMS_OUTPUT.PUT_LINE('학번 : ' || ST_ID); -- 연결 연산자 (||)
DBMS_OUTPUT.PUT_LINE('이름 : ' || ST_NAME);
DBMS_OUTPUT.PUT_LINE('학과 : ' || DEPT);
DBMS_OUTPUT.PUT_LINE('PI : ' || PI);
END;
/
학번 : 10955
이름 : 하람코
학과 : 경영정보
PI : 3.141592
%TYPE
: 해당 컬럼의 데이터 타입을 얻어옴%ROWTYPE
: 한 행에 있는 모든 컬럼의 데이터 타입을 얻어옴📍 %TYPE
DECLARE
EMP_ID EMPLOYEE.EMP_ID%TYPE;
EMP_NAME MPLOYEE.EMP_NAME%TYPE;
DEPT_CODE EMPLOYEE.DEPT_CODE%TYPE;
JOB_CODE EMPLOYEE.JOB_CODE%TYPE;
SALARY EMPLOYEE.SALARY%TYPE;
BEGIN
SELECT EMP_ID, EMP_NAME, DEPT_CODE, JOB_CODE, SALARY
INTO EMP_ID, EMP_NAME, DEPT_CODE, JOB_CODE, SALARY
-- SELECT 조회 결과 컬럼 값을 선언한 변수에 대입
FROM EMPLOYEE WHERE EMP_NAME = '&EMP_NAME : '; -- 값 입력 화면 (&)
DBMS_OUTPUT.PUT_LINE(EMP_ID);
DBMS_OUTPUT.PUT_LINE(EMP_NAME);
DBMS_OUTPUT.PUT_LINE(DEPT_CODE);
DBMS_OUTPUT.PUT_LINE(JOB_CODE);
DBMS_OUTPUT.PUT_LINE(SALARY);
END;
/
📍 %ROWTYPE
DECLARE
EMP EMPLOYEE%ROWTYPE;
BEGIN
SELECT * INTO EMP FROM EMPLOYEE
WHERE EMP_ID = '&EMP_ID';
DBMS_OUTPUT.PUT_LINE('EMP_ID : ' || EMP.EMP_ID);
DBMS_OUTPUT.PUT_LINE('EMP_NAME : ' || EMP.EMP_NAME);
DBMS_OUTPUT.PUT_LINE('EMP_NO : ' || EMP.EMP_NO);
DBMS_OUTPUT.PUT_LINE('SALARY : ' || EMP.SALARY);
END;
/