Oracle Procedure Function Trigger - accidentlywoo/sec GitHub Wiki
sql의 정리 먼저
내장 함수
- 단일행함수 : 문자/숫자/날짜/형변환/NULL/일반함수
- 여러행함수 : COUNT(), SUM(), AVG(), MIN(), MAX()
PL/SQL 사용자정의 함수
- 반환값이 있는 함수 : FUNCTION
- 반환값이 없는 함수 : PROCEDURE
- 함수 내부에서 순차일처리가 가능 (변수활용, 조건처리, 반복처리)
PROCEDURE
구문 탐색!
CREATE OR REPLACE PROCEDURE 프로시저명([매개변수이름1 자료형, ...])
IS(또는 AS) [지역변수명1 자료형,] (지역변수 마다 ';'을 붙이기)
BEGIN
프로시저가 할일 -> 여러가지 작업 쌉 가능!
대입연산자 -> :=
트랜잭션 완료 작업을 해야한다.
dbms_output.put_line()-> 클라이언트 스크립트에 결과물을 찍어주는 함수.
SELECT 구문을 사용하려면 제약조건이 있다.
END (프로시저명);
매개변수/지역변수 자료형
- 기본 자료형 : 숫자형, 문자형, 날짜형 [%type]
COLUMN%type
- 참조 자료형 : 컬럼 참조형, 레코드 참조형
프로시저에서 SELECT 구문
SELECT pwd, name INTO vpwd, vname
FROM customer
WHERE id = 'id8';
반드시 INTO를 사용해서 지역변수로 담아서 출력해야하고, 일반적인 사용에서는 WHERE 절을 통해 단일 결과를 나오게 해야한다.(Scalar쿼리)
여러 행을 출력하려면 Cursor을 만들어야 한다.
프로시저에서 IF문
Trigger
CREATE OR REPLACE TRIGGER 트리거명
[AFTER/BEFORE] OF 컬럼 ... IN 테이블명
FOR EACH ROW
BEGIN
INSERT/UPDATE/DELETE [DML만 가능]
(:old.컴럼명/:new.컬럼명)
END;
트리거의 안쪽에 COMMIT/ROLLBACK을 사용하지 않는다.