ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DB] Mysql 프로시져
    데이터베이스 2020. 12. 6. 16:57
    728x90

    Procedure(프로시져)

    SQL 문에 assignment, if-else, for loop 와 같은 절차적인 요소를 넣기 위해 고안된 개념

     

    SQL/PSM (Persistent Stored Module) : 함수나 프로시져를 미리 정의해두고 DBMS 내부에 저장해둔 뒤 call 만 하는 방식

    장점

    • Encapsulation : 사용자가 내부 구현을 알지 못해도 됨

    • Low network traffic : 웹 클라이언트를 거치지 않음

    • Delegating access right : 테이블 권한은 없더라도 프로시져 호출 권한만으로 해당 테이블에 접근 가능

    프로시져는 여러개의 out 을 정의하는 것이 가능함

    정의

    CREATE PROCEDURE profCountProc (in deptName varchar(20), out pCount INTEGER)
    BEGIN
      SELECT COUNT(*) INTO pCount FROM professor
      WHERE professor.deptName = profCountProc.deptName
    END;

    사용법

    DECLARE myProcCount INTEGER;
    CALL profCountProc(‘CS’, myProcCount);

    Procedure Construct (프로시져 생성자)

    While & repeat

    DECLARE n INTEGER DEFAULT 0;
    WHILE n < 10 DO
    SET n = n + 1
    END WHILE
    REPEAT
    SET n = n - 1
    UNTIL n = 0
    END REPEAT

    Iteration

    DECLARE n INTEGER DEFAULT 0;
    FOR r AS
      SELECT totalCredit FROM student
      WHERE deptName = ‘CS’
    DO
    SET n = n + r.totalCredit
    END FOR

    If-then-else

    IF {Boolean expression} THEN {statement}
    ELSEIF {Boolean expression} THEN {statement}
    ELSE {statement}
    END IF

    Exception

    DECLARE noMoreSeats CONDITION
    DECLARE EXIT HANDLER FOR noMoreSeats
    BEGIN
      …
      signal noMoreSeats;
      …
    END

     

    댓글

Designed by Tistory.