SQL

[Oracle] PL/SQL

Link2Me 2016. 11. 24. 12:21
728x90

PL/SQL(Procedure Language / Structured Query Language)은 오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 컴퓨터 프로그래밍 언어. 주로 자료 내부에서 SQL 명령문만으로 처리하기에는 복잡한 자료의 저장이나 프로시저와 트리거 등을 작성하는 데 쓰인다.


주석 처리는 -- 또는 /*  */


CREATE OR REPLACE PROCEDURE 프로시져이름 (
    변수명 IN DATATYPE       -- Mode를 생략하면 default 로 IN
    변수명 OUT DATATYPE
    변수명 IN OUT DATATYPE
)
IS
    [선언문];  -- 변수의 선언

    -- v_cnt NUMBER := 0;   --프로시저 선언부에서 변수초기화하는 방법
BEGIN
    실행문;
    [EXCEPTION]
END;
/


/* 예제  */

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; -- PL/SQL 블록 내에서는 한 문장이 종료할 때마다 세미콜론(;) 을 사용.

  COMMIT;  -- 프로시저는 자동 커밋되지 않으므로 반드시 INSERT, UPDATE, DELETE 에서 COMMIT 해야한다.
END update_sal;
/     -- PL/SQL 블록은 행에 / 가 있으면 종결됨.


/* 프로시저 호출 */

EXECUTE update_sal(7369);


자료출처 : http://www.gurubee.net/lecture/1041  를 기준으로 다른 자료도 참조하면서 적었다.

교육은 받았는데 오라클 DB를 만질 일이 없다보니 교육도 집중해서 듣지 않아 세부적인 것은 잘 모른다.

그냥 간단한 것만 기록차원에서 적어둔다.


Function은 반드시 그 결과값을 리턴한다.


CREATE OR REPLACE FUNCTION 함수명 (
    변수명 [MODE] DATATYPE,
    변수명 [MODE] DATATYPE
)
RETURN 리턴할데이터타입 --값
IS
    [선언문];
BEGIN
    실행문;
    [EXCEPTION]
END;
/


CREATE OR REPLACE FUNCTION get_table_size
(p_table_name varchar2)

return number

is
  outval number;
BEGIN
  select ROUND(SUM(bytes)/1024/1024) INTO outval
  FROM user_segments 
  WHERE segment_name = p_table_name
  and segment_type ='TABLE'
  group by segment_name;
  RETURN outval;
END;
/

728x90