본문 바로가기
IT ▶/Data

[PL/SQL 기초] PL/SQL 이란? - 변수, 상수, %TYPE, 커서

by 오프로 2020. 2. 19.

 

 

 

 

 

# 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 설명

 

[PL/SQL 개념] 오라클 PL/SQL PROCEDURE (프로시저), FUNCTION 설명

1> PROCEDURE (프로시저) - 특정 처리 실행하는 서브 프로그램 유형 - 다른 프로시저, 오라클 툴, Pro*C 등 호출하여 실행 - 컴파일 이후 오브젝트로 데이터베이스 내 저장 이후 호출되면서 실행 - 생성 : CREATE..

lovefor-you.tistory.com

 

 

 

728x90
300x250