프로시져를 만들어서 편하게 사용하시죠~~

2008. 6. 23. 23:20DB&NoSQL/MySQL

ms-sql,oracle 에서는 쉽게쉽게 사용하던 Stored Procedure 를...
MySQL에서도 사용할수 있다는걸 알게 된지는... 꽤 오래 된것 같은데, 실무에 적용하기는 오랜만이다.
생성하는 곳에 트렌잭션도 추가 가능하다...(이건 나중에~~ ^^;;), 트리거 및 함수 생성도 가능합니다.
제가 자주 쓰는건 역시 프로시져 이기 때문에 기재를 해 놓겠습니다.
아래는 회사내에서 과금로그 쌓는거... 어설프거나,이상하면.. 신고 바랍니다.

생성하기 전에 삭제하는 방법 부터....

Drop PROCEDURE np_sktwaplog_in;

두번째로~ 생성하는 방법 (주의할 사항 : 난 END IF; 다음에 ; (세미콜론)이 들어가는걸 못찾아서 좀 헤맸다는거...T.T)

delimiter //
CREATE PROCEDURE np_sktwaplog_in
(
 in wseq int,
 in mdn varchar(15),
 in svcmngnum varchar(20),
 in cost int
)
BEGIN
 DECLARE icnt INT DEFAULT 0;
 DECLARE icnt2 INT DEFAULT 0;
 select count(*) into icnt from nt_sktwaplog_info where wi_wseq=wseq and TO_DAYS(now())=TO_DAYS(wi_date);
 
 IF( icnt =0 ) THEN
  insert into nt_sktwaplog_info(wi_wseq,wi_cost,wi_uv,wi_pv,wi_date) values(wseq,cost,1,1,now());
 ELSE
  select count(*) into icnt2  from nt_sktwaplog_log where wl_wseq=wseq and wl_svcmngnum=svcmngnum and TO_DAYS(now())=TO_DAYS(wl_regdate);
  IF(icnt=0) THEN
   update nt_sktwaplog_info set wi_cost = wi_cost+cost, wi_uv = wi_uv + 1, wi_pv = wi_pv + 1 where wi_wseq=wseq and TO_DAYS(now())=TO_DAYS(wi_date);
  ELSE
   update nt_sktwaplog_info set wi_cost = wi_cost+cost, wi_pv = wi_pv + 1 where wi_wseq=wseq and TO_DAYS(now())=TO_DAYS(wi_date);
  END IF;
 END IF;
 insert into nt_sktwaplog_log(wl_wseq,wl_cost,wl_regdate,wl_mdn,wl_svcmngnum) values(wseq,cost,now(),mdn,svcmngnum);
END 
//
delimiter ;

여기까지 보시면 delimiter 이 뭐에 쓰이는 물건인지는 파악이 될것을 꺼라 생각이 되겠죠~~~

세번째는 제대로 등록했는지 확인 해야죠~~

show procedure status;

자~~~ 쉽죠~~~

'DB&NoSQL > MySQL' 카테고리의 다른 글

MYSQL 백업 과 복구  (0) 2015.12.06
Mysql 사용자 권한 부여  (0) 2015.12.06
MySQL를 다시 시작해봅시다.  (0) 2011.03.10