프로시저 : 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업 수행
● 스토어드 프로시저라고도 불림 ● 재호출하여 사용 가능
< 프로시저 생성 >
[ 표기 형식 ]
[ 설명 ]
● OR REPLACE : 동일한 프로시저 이름이 이미 존재하는 경우, 기존의 프로시저를 대체할 수 있다.
● 파라미터
- IN : 호출 프로그램이 프로시저에게 값 전달
- OUT : 프로시저가 호출 프로그램에게 값 반환
- INOUT : 호출 프로그램이 프로시저에게 값 전달, 프로시저 실행 후 호출 프로그램에 값 반환
< 프로시저 실행 >
[ 표기 형식 ]
[[ 예시 ]]
● '사원번호' 32를 인수로 하여 생성된 emp_change_s 프로시저를 실행하시오
-> EXECUTE emp_change_s(32);
< 프로시저 제거 >
[ 표기 형식 ]
트리거 : DB 시스템에서 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL
● 목적 : 데이터 변경 및 무결성 유지, 로그 메시지 출력
● DCL을 사용 X, DCL이 포함된 프로시저나 함수를 호출하는 경우에도 오류 발생
< 트리거의 생성 >
[ 표기 형식 ]
[ 설명 ]
● 동작시기 옵션
- AFTER : 테이블이 변경된 후 트리거 실행
- BEFORE : 테이블이 변경되기 전 트리거 실행
● NEW / OLD( 지정된 테이블 이름 앞에는 콜론( : )이 들어간다. )
- NEW : 추가되거나 수정에 참여할 튜플들의 테이블
- OLD : 수정되거나 삭제 전 대상이 되는 튜플들의 테이블
< 트리거 제거 >
[ 표기 형식 ]
사용자 정의 함수 : 일련의 작업을 연속으로 처리, 종료 시 처리 결과를 단일값으로 반환
● DML문 호출에 의해 실행
● 출력 파라미터 X
● SELECT를 통한 조회만 가능
● 프로시저를 호출하여 사용 X
< 프로시저와 사용자 정의 함수 차이 >
구분 | 프로시저 | 사용자 정의 함수 |
반환 값 | 없거나 1개 이상 가능 | 1개 |
파라미터 | 입/출력 가능 | 입력만 가능 |
사용 가능 명령문 | DML, DCL | SELECT |
호출 | 프로시저, 사용자 정의 함수 | 사용자 정의 함수 |
사용 방법 | 실행문 | DML에 포함 |
< 사용자 정의 함수 생성 >
[[ 예시 ]]
● 'i_성별코드'를 입력받아 1이면 "남자"를, 2면 "여자"를 반환하는 사용자 정의 함수를 'Get_S_성별'이라는 이름으로 정의하시오
-> CREATE FUNCTION Get_S_성별( i_성별코드 IN INT )
RETURN VARCHAR2
IS
BEGIN
IF ( i_성별코드 = 1 ) THEN
RETURN '남자';