PL/SQL 기본 단위 블록
- 선언부(Declare) : 실행부에서 사용할 변수, 상수 선언
- 실행부 (BEGIN ~ END) : 실제 처리할 로직 , 여러 개의 SQL문을 순차적으로 처리 가능
- TRY ~ CATCH문 처럼 예외를 잡는 용도로 많이 사용한다.
- 예외처리부 (Exception) : 실행부 로직 처리 중 발생되는 오류를 처리
CREATE OR REPLACE PROCEDURE 프로시져명
(파라미터1 IN | OUT | IN OUT
,파라미터2 IN | OUT | IN OUT...);
IS[AS]
변수, 상수 등을 선언
BEGIN --프로시저로직의 시작
로직을 실행할 쿼리문
[EXCEPTION 예외처리]
END 프로시져 명;
PL/SQL 변수, 상수, %TYPE 선언
- 선언부에서 변수 선언 및 초기화
- 실행부에서 변수에 새로운 값 지정
- 출력 변수를 이용해서 결과 출력
1. 변수 선언
v_gender CHAR(10); -- v_gender의 경우 초기값설정을 안했으므로 NULL이다
v_count NUMBER(100); -- NUMBER변수 v_gender 초기값X(NULL)
v_sal INTEGER := 1000; -- INTEGER 변수 v_sal 초기값 1000 설정
2. 상수 선언
c_female constant char(1) := 'F' -- c_female 상수 값 F로 고정
3. %TYPE
- 선언한 테이블의 컬럼타입과 같은 타입으로 설정
- 오라클 서버가 실행 시점에 변수의 데이터 타입과 크기를 결정한다.
DECLARE
v_last_name s_emp.last_name%TYPE; --s_emp테이블의 last_name컬럼과 같은 데이터타입으로 설정된다.
v_first_name s_emp.first_name%TYPE; --s_emp테이블의 first_name컬럼과 같은 데이터타입으로 설정된다.
BEGIN
SELECT last_name, first_name
INTO v_last_name, v_first_name
FROM s_emp
WHERE id = 1;
DBMS_OUTPUT.PUT_LINE(v_last_name);
DBMS_OUTPUT.PUT_LINE(v_first_name);
END;
/
장점
- 데이터베이스 컬럼의 데이터 타입을 정확히 알지 못해도 사용가능
- 설정한 데이터베이스 컬럼의 데이터 타입이 변경되어도 수정할 필요가 없다.
주의할점
- NOT NULL Column 제약조건은 %TYPE을 써서 선언한 변수에는 적용X
4. %ROWTYPE
- 테이블이나 뷰의 하나이상의 컬럼들에 대해 변수 선언
- 테이블명을 접두어로 표기
- 자바의 Bean Object
DECLARE
employee_record s_emp%ROWTYPE; -- s_emp 테이블의 데이터를 employee_record에 할당
BEGIN
SELECT *
INTO employee_record
FROM s_emp
WHERE id = 1; -- s_emp 테이블에서 id가 1인 값
DBMS_OUTPUT.PUT_LINE(employee_record.last_name);
DBMS_OUTPUT.PUT_LINE(employee_record.first_name);
DBMS_OUTPUT.PUT_LINE(employee_record.salary);
END;
/
반응형