본문 바로가기
Lecture/Mysql

[MySQL]Stored Procedure 개요

by cusmaker 2014. 1. 27.
반응형

Stored Program이란?
 - MySQL5 버전부터 지원
 - ANSI SQL 2003을 기준으로 채택(블럭구조기반)
 - 3가지 타입
   Stored procedure : 가장 일반적인 타임
   Stored functions : 프로시져와 비슷하지만 단일값만 return
   Triggers : 데이터베이스 activity발생시 반응되는 action정의

 

Stored Program 사용이유
 - 데이터베이스 보안 강화
 - 코드의 유지보수를 더욱 쉽게
 - 네트웍 트래픽 감소
 - 어플리케이션의 이동성을 강화
 
Procedure의 기초

 - 기본 샘플

 DELIMITER $$

 DROP PROCEDURE IF EXISTS HellloWorld$$

 CREATE PROCEDURE HelloWorld()

 BEGIN

   SELECT 'Hello World';

 END$$

 DELIMITER ;

 

 - 변수

 BEGIN

   DECLARE my_integer INT;

   DECLARE my_dob     DATE DEFAULT '1960-06-21'

   SET my_integer=20;

 END;

 
 - 파라미터의 모드

 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)

   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절 가능)

   my_simple_loop : LOOP

     SET counter = counter+1;

   END LOOP my_simple_loop;



 - SELECT INTO(변수에 값을 SELECT로 넣을 경우 사용)

   DECLARE total NUMERIC(8,2);

   SELECT SUM(sale) INTO total

   FROM sales



 

 - Store Function : IN파라미터만 사용가능, OUT, INOUT는 사용 불가, SQL내에서도 호출 가능


 - Trigger : DML문에 의하여 테이블이 변경되었을때만 실행됨


출처 : http://javapia.tistory.com/1

'Lecture > Mysql' 카테고리의 다른 글

[스크랩] mysql stored procedure  (2) 2014.02.04
[스크랩] “ MySQL 쓰면서 하지 말아야 할 것 17가지 ”  (0) 2014.02.03
mysql 테이블복사  (0) 2014.01.29
mysql 외부접속 허용하기  (0) 2014.01.29
mysql 복구&백업  (0) 2014.01.29