1. 특정한 작업을 수행하는 SQL문을 논리적으로 그룹화한 것
2. 연속된 SQL문을 하나로 모아 SQL서버에 미리 컴파일해서 저장해 놓은 것
3. 클라이언트로부터 호출문을 통해 복잡한 SQL의 일괄 작업을 수행하는데 적합하다.
구성
선언부 : 타입,커서, 상수, 변수, 내포된 서브 프로그램을 선언하는 부분
실행부 : 코드 실행을 제어하고 데이터를 조작하는 문장들을 작성하는 부분
예외 처리부 : 프로시저 실행중에 발생하는 예외를 처리하는 부분
장점
1. 모듈별 프로그래밍 허용
- 프로시저를 한 번만만들어 데이터베이스에 저장한 후 여러 프로그램에서 계속해서 호출하여 사용할 수 있다.
2. 빠른 SQL 실행 시간
- 프로시저는 만들어질 때 구문이 분석되고 최적화된다.
- 프로시저는 하 번 실행된 후에는 메모리에 캐시되어 다음 실행에서는 빠르게 실행될 수 있다.
3. 보안성 향상
- 사용자가 프로시저를 통해서만 데이터에 접근할 수 있도록 사용자에 대한 데이터베이스 접근 권한을 제한
4. 네트워크 통신량 감소
- 응용 프로그램에서는 수백 줄의 SQL코드를 필요로 하는 작업을 네트워크로 보내지 않아 네트워크 통신량 감소
프로시저 생성 예)
CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터) [지역변수 선언] 프로시저 BODY;
OR REPLACE : 선택적인 예약어, 이 예약어를 사용하면 동일한 프로시저 이름이 이미 존재하는 경우, 기존의 프로시저를 대체할 수 있다.
프로시저명 : 생성하려는 프로시저의 이름
파라미터 : 프로시저 파라미터로는 다음과 같은 것들이 온다.
- IN : 호출되는 프로시저에 값을 잔달하는 것을 지정
- OUT : 프로시저가 그 호출 프로그램에게 값을 반환한다는 것을 지정
- INOUT : 프로시저에 ㄱ밧을 잔달하고, 프로시저 실행 후 호출 프로그램에 값을 반환해야 한다는 것을 지정
- 프로시저 BODY : 프로시저의 본문 코드를 기록하는 부분
- BEGIN으로 시작해서 END로 끝나는 데 적어도 하나의 SQL문이 있어야 한다. 없을 경우 오류 발생
- 변수에 값을 치화할 때는 예약어 'SET' 사용