-
[DB] Mysql 프로시져데이터베이스 2020. 12. 6. 16:57728x90
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
'데이터베이스' 카테고리의 다른 글
[DB] Mysql View (0) 2020.12.06 [DB] Mysql C/C++ 함수 연동 (0) 2020.12.06 [DB] Mysql 함수 정의 및 사용 (3) 2020.12.06 [DB] Mysql Date 타입, 사용자정의 타입, 도메인, Large Object (0) 2020.12.06 [DB] DateType(날짜) 종류 (0) 2020.12.06 -