# PL/SQL 뜻 : ‘Prodedural Language extension to Structured Query Language’
-> SQL을 확장하여 순차적으로 처리하는 언어
-> SQL + 프로그래밍 언어
# PL/SQL 기본 단위 블록 (block)
1> 선언부 (Declare) : 실행부에서 사용할 변수, 상수 선언
2> 실행부 (BEGIN ~ END) : 실제 처리할 로직 (SQL), 여러 개의 SQL 문을 순차적으로 처리 가능
3> 예외처리부 (Exception) : 실행부 로직 처리 중 발생되는 오류 처리
[예시]
DECLARE
Number INTEGER; // 변수 선언 : ’변수명 데이터타입’
BEGIN
Number := Number + 1; // 값 할당 시 ‘:=’ 사용
IF Number IS NULL THEN
dbms_output.put_line(‘Number is null’);
END IF;
EXCEPTION WHEN Number = 10 THEN
dbms_output.put_line(‘Number is 10’);
END;
# PL/SQL 변수, 상수, %TYPE 선언
1> 변수 선언
Test CHAR(10);
Test_num NUMBER(100);
Test_num2 INTEGER :=1000; // INTEGER 변수 Test_num2 초기값 : 1000 설정
2> 상수 선언
Test_num CONSTANT INTEGER := 100; // 상수는 반드시 100 같이 값을 할당해야 한다.
3> %TYPE
참조할 테이블 컬럼의 데이터 타입을 자동으로 가져온다.
[문법]
변수명 테이블명.컬럼명%TYPE’;
[예시] TEAM_TABLE 테이블의 SET_DATE 컬럼 타입을 그대로 V_SET_DATE 변수의 타입으로 설정
V_SET_DATE TEAM_TABLE.SET_DATE %TYPE;
4> %ROWTYPE
%TYPE은 하나의 값에 적용, %ROWTYPE 은 하나 이상의 값에 적용 (콜렉션, Object 변수)
[문법]
LOOP 반복문
LOOP
처리 문장들 ….;
END LOOP;
LOOP를 빠져나오기 위해서는 처리 문장 중간에 EXIT; 를 기술해야 해당 LOOP문을 빠져나올 수 있습니다.
# 커서 (CURSOR)
SELECT 문장을 실행하면 조건에 따른 결과집합이 추출 되고, 해당 쿼리에 따른 결과가 메모리 상 위치
커서를 통해서 해당 결과집합의 각 개별 데이터에 접근
1> 명시적 커서
사용자가 직접 쿼리 결과에 접근하여 사용하기 위해 명시적으로 선언한 커서
# 커서선언 : 커서명 선언, 쿼리 정의
CURSOR 커서명 IS
SELECT 문장;
# 커서 열기 (Open) : 커서로 정의된 쿼리를 실행하는 역할
OPEN 커서명;
# 패치 (Fetch) : 쿼리 결과 접근
FETCH 커서명 INTO 변수;
# 커서 닫기 (Close) : 패치 작업이 종료되면 커서를 닫는다. (메모리 상 쿼리 삭제)
CLOSE 커서명;
2> 묵시적 커서
묵시적 커서는 오라클 내부에서 각각 쿼리 결과에 접근하여 커서 수행
모든 쿼리가 실행될 때마다 커서 오픈
# PL/SQL 서브 프로그램
1> 내장 프로시저 (Procedure)
데이터 베이스 상 사용자가 지정한 임의의 처리를 수행하는 블록 (데이터베이스 내 저장 객체)
반환 결과값 필요없이 로직만 처리
[구문]
CREATE OR REPLACE PROCEDURE 프로시저명 (파라미터1 데이터타입, ~)
IS [AS]
변수선언;
BEGIN 프로시저 처리내용;
EXCEPTION 예외처리;
END;
2> 함수 (Function)
사용자가 직접 정의해서 작성한 함수로 반환 결과값 존재
[구문]
CREATE OR REPLACE FUNCTION 함수명 (파라미터1 데이터타입, ~)
RETURN 데이터타입 IS [AS]
변수선언;
BEGIN 처리내용;
RETURN 리턴값;
END;
3> 패키지 (Package)
함수나 프로시저를 같은 업무 단위 처리를 위하여 서로 묶어놓은 개념 (객체)
[구문]
CREATE OR REPLACE PACKAGE 패키지명 AS
프로시저 또는 함수 선언;
END 패키지명;
아래 PL/SQL 관련 추가로 내용 참고하시기 바랍니다!!
감사합니다.
[IT/Data] - [PL/SQL 개념] 오라클 프로시저 PL/SQL 기본 정리
[IT/Data] - [PL/SQL 개념] PL/SQL cursor 커서, Oracle Exception 예외처리
[IT/Data] - [PL/SQL 개념] 오라클 PL/SQL PROCEDURE (프로시저), FUNCTION 설명
'IT ▶ > Data' 카테고리의 다른 글
[Database] 데이터베이스 테이블 생성 & 테이블 데이터타입 개념 (0) | 2020.03.06 |
---|---|
데이터베이스 SQL 기본함수 정리 (숫자, 날짜 함수) (0) | 2020.03.02 |
[SQL PL] PL/SQL 변수제어, 흐름제어 (IF, LOOP, REPEAT) (0) | 2020.02.08 |
[PL/SQL 개념] 오라클 PL/SQL PROCEDURE (프로시저), FUNCTION 설명 (0) | 2020.01.11 |
[PL/SQL 개념] PL/SQL cursor 커서, Oracle Exception 예외처리 (0) | 2020.01.11 |