1. 개요 - 작업을 수행하는 명명된 PL/SQL블록. - 반복실행을 위한 DB 객체로서 DB에 저장. - 매개변수를 가질 수 있고 호출될 수 있음. - 머리말, 선언부, 실행부, 예외처리부로 구성. - 재이용성, 유지가능성을 높여줌
2. 구문 Create [Or Replace] Procedure procedure_name (argument1 [mode1] datatype1, argument2 [mode2] datetype2, …) Is | As
Begin
[Exception]
End [procedure_name];
procedure_name 프로시저의 이름 Argument 전달 인수 명 Mode 인수의 유형 IN(default) input argument OUT output argument INOUT input/output argument Datatype 인수의 데이터 타입
3. SQL*PLUS 이용 프로시저 생성 - 스크립트 파일 생성 : Sql> ed[it] 파일명.sql - 프로시저 스크립트 생성 후 스크립트 파일 저장. - 프로시저 생성 및 컴파일 : Sql> @파일명 또는 start 파일명 - 컴파일 오류 발생시 오류 확인 : Sql> show error [Procedure 프로시저명] - 프로시저 실행 : Sql> execute 프로시저명(인수명)
4. 프로시저 생성 예 SQL> ed raise_salary.sql
Create Or Replace Procedure raise_salary (v_id in emp.empno%TYPE) IS Begin update emp set sal = sal * 1.10 where empno = v_id; End raise_salary; /
SQL>@raise_salary 프로시저가 생성되었습니다.
SQL> execute raise_salary(7369) PL/SQL 처리가 정상적으로 완료되었습니다
5. 매개변수 전달 방법 - 다중의 매개변수를 가지는 프로시저에서 매개변수의 값을 지정하기 위한 위치(Positional), 명명(Named), 결합(Combination)의 방법을 이용할 수 있음. - 위치 : 선언된 매개변수의 순서로 값을 나열 - 명명 : 특수구문(=>)을 이용하여 매개변수 이름과 짝을 이룸으로써 순서없이 값을 나열 - 결합 : 위치, 명명의 나열방식으로 값을 나열
Create Or Replace Procedure add_dept (v_deptno in dept.deptno%type, v_name in dept.dname%type default 'unknown', v_loc in dept.loc%type default 'unknown') IS Begin Insert into dept values (v_deptno, v_name, v_loc); End add_dept; /
Begin add_dept(41); add_dept(42, 'TRAINING','SEOUL'); add_dept(v_loc=>'JEONJU', v_deptno=>43, v_name=>'EDUCATION'); add_dept(44, v_loc=>'DALAS', v_name=>'PRODUCING'); End; /
6. 프로시저 삭제 - SQL*PLUS를 사용하여 : Drop Procedure procedure_name - 프로시저 삭제 예 : Drop Procedure raise_salary; - 롤백은 Drop Procedure같은 데이터 정의 언어(DDL) 명령어 실행 후에는 불가능.
|