■ 스토어드 프로시저(stored procedure)
- 데이터베이스 내에 컴파일되어 저장된 프로시저
- 데이터베이스에 저장된 프로시저는 오브젝트로 관리된다.
■ 프로시저를 사용하는 이유
- 특정 문제나 작업을 해결하기 위해서 사용한다.
- 특정기능을 담당하는 모듈(module)단위로 되어있다.
- 재사용이 가능하다.
- 스토어드 프로시저를 통해서만 데이터를 액세스할 수 있어 보안이 향상된다.
- 프로시저는 공유된 메모리 자원을 이용한다.
■ 프로시저 생성
CREATE OR REPLACE PROCEDURE 프로시저이름
IN argument
OUT argument
IN OUT argument
IS
변수선언
BEGIN
PL/SQL Block -- SQL 문장, PL/SQL 제어문장
PL/SQL Block -- SQL 문장, PL/SQL 제어문장
EXCEPTION -- error가 발생할때 수행하는 문장(선택사항)
END;
- OR REPLACE : 프로시저가 이미 존재할 경우 덮어 쓴다. (항상 사용하는 것이 좋다)
- IN : 호출되는 프로시저에 값을 전달
- OUT :프로시저를 호출한 프로그램에게 값을 반환
- IN OUT : IN+OUT, 프로시저에게 값을 전달하고 결과를 프로그램에게 반환
■ 프로시저 실행
EXECUTE 프로시저이름(파라미터값);
■ 파라미터
- 프로시저는 파라미터를 사용하여 정보를 전달한다.
- 프로시저를 호출할 때는 프로시저의 파라미터에 대해 값을 전달해야 한다.
- Actual Parameter : 프로시저에 전달된 파라미터(실제파라미터)
- Internal or Formal Parameter : 프로시저 내부에 선언된 파라미트(내부 또는 형식파라미터)
- Actual Parameter 의 데이터형과 Internal Parameter 의 데이터 형이 같아야 한다.
■ 프로시저 목록 확인
SELECT object_name FROM user_objects WHERE object_type='PROCEDURE';
■ 프로시저 삭제
DROP PROCEDURE 프로시저이름;
EX
SQL> CREATE OR REPLACE PROCEDURE update_sal -- 프로시저 생성
2 /* IN Parameter */
3 (v_empno IN NUMBER)
4 IS
5
3 (v_empno IN NUMBER)
4 IS
5
6 BEGIN
7
7
8 UPDATE emp
9 SET sal = sal * 1.1
10 WHERE empno = v_empno;
11 COMMIT;
12
9 SET sal = sal * 1.1
10 WHERE empno = v_empno;
11 COMMIT;
12
13* END update_sal;
14 /
14 /
SQL> execute update_sal(7934); -- 프로시저 실행
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> select object_name, object_type from user_objects where object_type='PROCEDURE'; -- 프로시저 확인
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE
-------------------
UPDATE_SAL
PROCEDURE
--------------------------------------------------------------------------------
OBJECT_TYPE
-------------------
UPDATE_SAL
PROCEDURE
EXPCURSOR_TEST
PROCEDURE
PROCEDURE
FORCURSOR_TEST
PROCEDURE
PROCEDURE
'Other > DB' 카테고리의 다른 글
Toad Editor 단축키 (0) | 2012.08.20 |
---|---|
PL/SQL SQL PLUS상에서 STORED PROCEDURE 소스 확인 방법 (0) | 2012.08.14 |
MySQL : 해당 필드에 중복된 값 찾기 (0) | 2012.06.15 |
mysql - DATE_FORMAT & TIME_FORMAT (1) | 2012.06.12 |
MySQL - auto_increment 1부터 시작 (0) | 2012.05.15 |