728x90
반응형
SMALL
PL/SQL이란?
PL/SQL : PROCEDURE LANGUAGE EXTENSION TO SQL
오라클 자체에 내장되어 있는 절차적 언어로 SQL 문장 내에서 변수 정의, 조건문, 반복문 등을 지원하고 다수의 SQL문을 한 번에 실행할 수 있다. SQL의 단점을 보완해준다.
구조
선언부
- DECLARE로 시작.
- 변수나 상수를 초기화하는 부분이고 생략이 가능하다.
실행부
- BEGIN ~ END 사이의 부분으로 BEGIN으로 시작하고 END로 끝낸다.
- SQL문 또는 제어문 로직을 작성하는 부분이다.
예외 처리부
- EXCEPTION으로 시작하고 예외 발생 시 해결하기 위한 부분이다. 생략이 가능하다.
PL/SQL의 실행 결과를 출력하기 위한 설정
-- * 화면에 표시하기 위한 설정
SET SERVEROUTPUT ON;
PL/SQL은 큰 따옴표("")가 아닌 작은따옴표('')로 문자를 출력할 수 있다.
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO ORACLE'); -- "" X
END;
변수
변수 또는 상수는 선언부에서 선언 및 초기화를 할 수 있다.
데이터타입 선언 종류
- 일반타입
- 참조(래퍼런스) 타입
- ROW 타입
일반 타입 변수
변수명 [CONSTANT] 자료형 [:= 값]
- 상수 선언 시 CONSTANT 키워드를 사용한다
- 초기화 시 := 기호를 사용한다 ( = 아님!! )
DECLARE
EID NUMBER;
ENAME VARCHAR2(20);
PI CONSTANT NUMBER := 3.14;
BEGIN
-- 변수에 값을 대입
EID := 100;
ENAME := '임성준';
-- || : 연결 연산자
DBMS_OUTPUT.PUT_LINE('EID : ' || EID);
DBMS_OUTPUT.PUT_LINE('ENAME : ' || ENAME);
DBMS_OUTPUT.PUT_LINE('PI : ' || PI);
END;
/ -- PL/SQL은 / 로 구분한다!
값을 입력받아 변수에 대입하기
DECLARE
EID NUMBER;
ENAME VARCHAR2(20);
PI CONSTANT NUMBER := 3.14;
BEGIN
ENAME := '임성준';
EID := &사원번호; -- 사용자로부터 입력받기 ☞ &대체변수명
DBMS_OUTPUT.PUT_LINE('EID : ' || EID);
DBMS_OUTPUT.PUT_LINE('ENAME : ' || ENAME);
DBMS_OUTPUT.PUT_LINE('PI : ' || PI);
END;
/
=> 값을 입력받을 경우 & 기호를 사용한다!!
참조 타입 변수
변수명 테이블명.컬럼명%TYPE
어떤 테이블의 어떤 컬럼의 데이터 타입을 참조하여 해당 타입으로 선언된 변수이다.
DECLARE
EID EMPLOYEE.EMP_ID%TYPE;
ENAME EMPLOYEE.EMP_NAME%TYPE;
SAL EMPLOYEE.SALARY%TYPE;
BEGIN
-- EMPLOYEE 테이블에서 입력받은 사번에 대한 서원 정보를 조회
SELECT EMP_ID, EMP_NAME, SALARY
INTO EID, ENAME, SAL -- 각 컬럼에 대한 값을 변수에 대입
FROM EMPLOYEE
WHERE EMP_ID = &사원번호;
DBMS_OUTPUT.PUT_LINE('EID : ' || EID);
DBMS_OUTPUT.PUT_LINE('ENAME : ' || ENAME);
DBMS_OUTPUT.PUT_LINE('SAL : ' || SAL);
END;
/
ROW 타입 변수
변수명 테이블명%ROWTYPE;
테이블의 한 행에 대한 모든 컬럼 값을 한 번에 담을 수 있는 변수
DECLARE
E EMPLOYEE%ROWTYPE;
BEGIN
SELECT *
INTO E
FROM EMPLOYEE
WHERE EMP_ID = &사번;
DBMS_OUTPUT.PUT_LINE('사원명 : ' || E.EMP_NAME);
DBMS_OUTPUT.PUT_LINE('급여 : ' || E.SALARY);
DBMS_OUTPUT.PUT_LINE('보너스 : ' || TO_CHAR(NVL(E.BONUS, 0), '0.0'));
DBMS_OUTPUT.PUT_LINE('보너스 : ' || '없음');
END;
/
728x90
반응형
LIST
'데이터베이스' 카테고리의 다른 글
[ORACLE] PL/SQL 반복문 - 기본 LOOP, FOR LOOP, WHILE LOOP (0) | 2025.03.17 |
---|---|
[ORACLE] PL/SQL 제어문 - 조건문(IF-ELSIF-ELSE, CASE-WHEN-THEN) (0) | 2025.03.17 |
[ORACLE] SQL - 시퀀스(SEQUENCE) (0) | 2025.03.17 |
[ORACLE] SQL - 뷰(VIEW) (0) | 2025.03.17 |
[ORACLE] 문자 처리 함수 - LPAD / RPAD (0) | 2025.03.13 |