프로시져를 만들어서 편하게 사용하시죠~~
2008. 6. 23. 23:20ㆍDB&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 ;
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 |