Stored Program이란? – MySQL5 버전부터 지원 – ANSI SQL 2003을 기준으로 채택(블럭구조기반) – 3가지 타입
Stored procedure : 가장 일반적인 타임
Stored functions : 프로시져와 비슷하지만 단일값만 return
Triggers : 데이터베이스 activity발생시 반응되는 action정의
Stored Program 사용이유 – 데이터베이스 보안 강화 – 코드의 유지보수를 더욱 쉽게 – 네트웍 트래픽 감소 – 어플리케이션의 이동성을 강화 Procedure의 기초
– 기본 샘플
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | DELIMITER $$ DROP PROCEDURE IF EXISTS HellloWorld$$ CREATE PROCEDURE HelloWorld() BEGIN SELECT 'Hello World' ; END$$ DELIMITER ; <b> - 변수</b> BEGIN DECLARE my_integer INT; DECLARE my_dob DATE DEFAULT '1960-06-21' SET my_integer= 20 ; END; |
– 파라미터의 모드
1 2 3 4 5 6 | DELIMITER $$ CREATE PROCEDURE my_sqrt(input_number INT, OUT out_number FLOAT) BEGIN SET out_number=SQRT(input_number); END$$ DELIMITER ; |
IN – 프로시저의 기본모드, 값을 전달받음 OUT – 값을 할당할 수 있고 호출할 프로그램에 반환 INOUT – 값을 전달할 수 있고 변경된 값 역시 확인 가능
– 조건절(IF, CASE)
1 2 3 4 5 6 7 | IF(price> 500 ) THEN SET discount= 10 ELSEIF (price> 100 ) THEN SET discount= 5 ELSE SET discount= 3 END IF |
– LOOP의 사용(WHILE/END WHILE, REPEAT/UNTIL절 가능)
1 2 3 | my_simple_loop : LOOP SET counter = counter+ 1 ; END LOOP my_simple_loop; |
– SELECT INTO(변수에 값을 SELECT로 넣을 경우 사용)
1 2 3 | DECLARE total NUMERIC( 8 , 2 ); SELECT SUM(sale) INTO total FROM sales |
– Store Function : IN파라미터만 사용가능, OUT, INOUT는 사용 불가, SQL내에서도 호출 가능
– Trigger : DML문에 의하여 테이블이 변경되었을때만 실행됨