SQL
posted by 준치 2008. 11. 14. 15:51

이번 프로젝트에서는 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