ผมเขียน procedure ขึ้นมาเพื่อดูว่าสถานบริการไหนขาดส่งหรือส่งล่าช้าไปกี่วัน ใครจะลองทำตามผมก็ได้นะครับ ตามนี้เลย
ใช้โปรแกรม Navicat ไปที่ฐาน PDC คลิกขวาสร้าง “New Function”
เลือก Procedure > Finish
วางโค้ดนี้ลงไป แล้ว Save ชื่อ procedure ว่า “sp_dis_chk_date_f43service” แล้วกด Run
BEGIN
DECLARE i
INT DEFAULT (SELECT COUNT(*) FROM mas_client);
DROP TABLE
IF EXISTS dis_chk_date_f43service;
CREATE TABLE
`dis_chk_date_f43service` (
`HOSPCODE` varchar(5) DEFAULT NULL,
`HOSPNAME` varchar(255) DEFAULT NULL,
`SEQ` varchar(15) DEFAULT NULL,
`PID` varchar(15) DEFAULT NULL,
`CID` varchar(15) DEFAULT NULL,
`DATE_SERV` date DEFAULT NULL,
`NO_UPDATE` int(11) DEFAULT NULL,
`D_UPDATE` datetime DEFAULT NULL,
`CHECK_DATE` datetime DEFAULT NULL
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
WHILE i > 0 DO
INSERT INTO dis_chk_date_f43service
SELECT * FROM (SELECT
s.HOSPCODE,c.HOSPNAME,s.SEQ,s.PID,s.CID,s.DATE_SERV,DATEDIFF(CURDATE(),DATE_SERV)
AS 'NO_UPDATE'
,s.D_UPDATE,DATE_FORMAT(CURTIME(),'%Y-%m-%d %H:%i:%s') AS 'CHECK_DATE' from f43_service s
,s.D_UPDATE,DATE_FORMAT(CURTIME(),'%Y-%m-%d %H:%i:%s') AS 'CHECK_DATE' from f43_service s
LEFT OUTER
JOIN mas_client c ON c.HOSPCODE = s.HOSPCODE WHERE s.HOSPCODE = (SELECT
HOSPCODE FROM mas_client LIMIT i,1) ORDER BY DATE_SERV DESC LIMIT 10) AS a;
SET i = i - 1;
END WHILE;
END
เสร็จแล้วข้อมูลจะอยู่ในตาราง dis_chk_dateserv (SELECT * FROM dis_chk_date_f43service)