이번 프로젝트에서는 PL/SQL을 주로 사용하게 될 것 같다.
Oracle 잘 모르는데.. ㅜㅜ
우선 기본적인 내용부터 포스팅 해야겠다.
- 프로시져란...
특정 작업을 수행할 수 있고, 이름이 있는 PL/SQL 블록으로서, 매개 변수를 받을 수 있고, 반복적으로 사용할 수 있는 언어이다. 보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PS/SQL블록을 데이터 베이스에 저장하기 위해서 생성한다.
- 프로시져 생성
CREATE OR REPLACE 구문을 사용하여 생성한다.
IS 로 PL/SQL의 블록을 시작한다.
LOCAL 변수는 IS와 DEGIN 사이에 선언한다.
CREATE OR REPLACE PROCEDURE name
IN argument
OUT argument
IN OUT argument
IS
[변수의 선언]
BEGIN --> 필수
[PL/SQL Block]
-- SQL문장, PL/SQL제어 문장
[EXCEPTION] --> 선택
-- error가 발생할 때 수행하는 문장
END; --> 필수
Feature 1. Syntax
SQL>CREATE OR REPLACE PROCEDURE update_sal
/* IN Parameter */
(v_empno IN NUMBER)
IS
BEGIN
UPDATE emp
SET sal = sal * 1.1
WHERE empno = v_empno;
COMMIT;
END update_sal;
/
프로시져가 생성되었습니다.
Feature 2. Procedure 작성 예제
위의 예제는 간단한 프로시저의 예이다. 위의 예제는 oracleclub 에서 발최한 내용이다.
먼저 프로시저의 이름은 update_sal이다.
프로시저 update_sal은 사번(v_empno)를 입력받아서 급여를 update시켜주는 sql문이다.
프로시저를 끝마칠때는 항상 "/"를 지정한다.
- Parameter
실행 환경과 program사이에 값을 주고 받는 역할을 한다.
블록 안에서의 변수와 똑같이 일시적으로 값을 저장하는 역할을 한다.
Parameter의 타입
- IN : 실행환경에서 program으로 값을 전달
- OUT : program에서 실행환경으로 값을 전달
- IN OUT : 실행환경에서 program으로 값을 전달하고, 다시 program에서 실행환경으로 변경된 값을 전달
- 프로시져 실행
프로시저의 실행은 EXECUTE문을 이용한다.
SQL> execute update_sal(7369);
PL/SQL 처리가 정상적으로 완료되었습니다.
Feature 3. Procedure 실행
실제로 확인해 보면 7369 사번을 가진 사용자의 봉급이 10% 인상되었다.
출처 : http://whitebear.tistory.com/64