Computer/MySQL

mysql procedure function

알찬돌삐 2012. 8. 10. 16:03

 

간단하게 실무에 사용 할 수 있게 요약만 적었습니다.

1) 기존 DB 에서 원하는 값만 따로 Table 생성 및 자료 구겨넣기

      CREATE TABLE member2 TYPE=innodb AS
      SELECT * FROM member WHERE joindate BETWEEN '1999-01-01' AND '2006-12-31';

2) PROCEDURE

  2-1) Mysql 에서 PROCEDURE 부르는 방법 : call 함수명('인자')

  2-2) 사용법 샘플

            CREATE PROCEDURE bengi_exam1()
            BEGIN
              --  변수 선언
              DECLARE bgtotal INTEGER; 
             
              --  회원테이블에서 벤지라는 글자가 들어간 사람의 총수을 구해서
              --  bgtotal 변수에 저장
              SELECT COUNT(upk) INTO bgtotal FROM member
              WHERE uname LIKE '%벤지%';
           
              --  총수 RETURN 
              SELECT bgtotal;
            END

           
3) FUNCTION

  3-1) Mysql 에서 FUNCTION 부르는 방법 : select function명('인자')

  3-2) 사용법 샘플
 
          --  datetime 형의 bdate 인자에 계산을 원하는 값 전달
          CREATE FUNCTION userage ( bdate datetime ) returns int(11)
          BEGIN
                  --  변수 선언         
                  DECLARE var_age INT;
                  --  나이를 구한다
                  SET var_age = date_format( now(),'%Y' ) - date_format( bdate,'%Y' );                 
                  -- 값을 RETURN 한다
                  RETURN(var_age);
          END;

         
4) PROCEDURE 에서 FUNCTION CALL
         
  4-1) 사용법 샘플
 
            CREATE PROCEDURE bengi_exam2()
            BEGIN
              -- 변수 선언
              DECLARE bgage INTEGER; 
              DECLARE membdate DATETIME; 
             
              -- 회원테이블에서 bengi라는 글자가 들어간 사람의 생년월일 구한다
              SELECT bdate INTO membdate FROM member
              WHERE uname = 'bengi';
           
              -- Function 에서 결과값을 받아 저장한다 (3-1 에 정의된것 사용)
              set bgage = userage(membdate); 
           
              -- 총수 RETURN 
              SELECT bgtotal;
            END

이 글은 스프링노트에서 작성되었습니다.

.

'Computer > MySQL' 카테고리의 다른 글

mysql 변수  (0) 2012.08.10
mysql 백업/복구  (0) 2012.08.10
mysql innodb  (0) 2012.08.10
mysql event  (0) 2012.08.10
my.cnf  (0) 2012.08.10