SyntaxHighlighter.all(); ORACLE_프로시저와 함수 :: 또르의 개발노트 ss
반응형

프로시저(Procedure)란?

     특정 작업을 수행 하는, 이름이 있는 PL/SQL BLOCK 이다.

     매개 변수를 받을 수 있고, 반복적으로 사용 할 수 있는 BLOCK이다.

     보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL BLOCK을 데이터     베이스에 저장하기 위해 생성 한다.

 

프로시저 문법

------------------------------------------------------------

CREATE OR REPLACE procedure name

IN argument

OUT argument

IN OUT argument

 

IS 

 

   [변수의 선언]

 

BEGIN  --> 필수 

 

   [PL/SQL Block]

-- SQL문장, PL/SQL제어 문장 

 

   [EXCEPTION]  --> 선택

-- error가 발생할 때 수행하는 문장

 

END;  --> 필수

----------------------------------------

-CREATE OR REPLACE 구문을 사용하여 생성 한다.

-IS로 PL/SQL의 블록을 시작 한다.

-LOCAL 변수는 IS BEGIN 사이에 선언 한다.

 

 

프로시저 예제

-----------------------------------------------------------------

-- 프로시저의 이름은 update_sal이다

-- update_sal 프로시저는 사번을 입력받아 급여를 인상 한다.

-- 프로시저를 끝마칠 때에는 항상 "/"를 지정 한다.

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;

/

------------------------------------------------------------------

 

프로시저 실행예제

SQL>EXCECUTE update_sal(7369)

PL/SQL처리가 정상적으로 완료되었습니다

 

 

함수(Function)란?

-보통 값을 계산하고 결과 값을 반환하기 위해서 함수를 많이 사용 한다.

대부분 구성이 프로시저와 유사 하지만 IN 파라미터만 사용 할 수있다.

반드시 반환 될 값의 데이터 타입을 RETURN문에 선언해야 한다.

도한 PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 한다.

 

함수문법

-- PL/SQL 블록에는 적어도 한 개의 RETURN 문이 있어야 한다.

-- PL/SQL Block은 함수가 수행 할 내용을 정의한 몸체부분이다.    

CREATE OR REPLACE FUNCTION function name

[(argument...)]

 

  RETURN datatype

-- datatype은 반환되는 값의 datatype입니다.

 

IS 

 

  [변수 선언 부분]

 

BEGIN

 

  [PL/SQL Block]

 

  -- 리턴문이 꼭 존재해야 합니다

RETURN 변수;

 

END;     

-------------------------------------------  

함수 실행 예제

-- 먼저 함수의 반환값을 저장 할 변수 선언.

SQL> VAR salary NUMBER;

 

-- EXECUTE 문을 이용해 함수를 실행합니다.

SQL>EXECUTE :salary := FC_update_sal(7900);

 

-- PRINT문을 사용하여 출력

SQL>PRINT salary;

 

    SALARY

----------

1045

 

-- 아래와 같이 SELECT문장에서도 사용 할 수 있다.

SQL> SELECT ename, FC_update_sal(sal) FROM emp;

 

END;  --> 필수 D update_sal;

/ D update_sal;

/ D update_sal;

/ D update_sal;


[출처]http://www.gurubee.net/lecture/1042

반응형

+ Recent posts