56,677
社区成员
发帖
与我相关
我的任务
分享
/*
物品的添加,返回1表示成功,no_mid表示没有月份编号请添加本月计划金额
*/
delimiter $$
DROP PROCEDURE IF EXISTS goods_add;$$
CREATE PROCEDURE goods_add(
goods VARCHAR(40), #物品名称
amount DECIMAL(7,2), #物品价格
atime CHAR(10), #录入时间
remark VARCHAR(40), #备注
paytype TINYINT(2) #物品类型,支出或收入
)
BEGIN
DECLARE `monthID` MEDIUMINT; #月份编号,物品表需要根据此编号做录入
DECLARE `goods_count` INT; #物品录入次数的记录
DECLARE `dayID` MEDIUMINT; #日统计
DECLARE account_time CHAR(10);
SET account_time = DATE_FORMAT(atime,'%Y-%m');
SELECT `mid` INTO monthID FROM month_tongji WHERE DATE_FORMAT(mtime,'%Y-%m') = account_time;
IF monthID IS NOT NULL THEN
#添加物品
INSERT INTO account VALUES(null,goods,amount,DATE(atime),remark,monthID,paytype);
#添加物品记录,首先查询是否有记录
SELECT num_view INTO `goods_count` FROM goods_info WHERE `goods` = goods;
IF goods_count >= 0 THEN
UPDATE goods_info SET `num_view` = goods_count + 1 WHERE `goods` = goods;
ELSEIF goods_count IS NULL THEN
INSERT INTO goods_info VALUES(null,goods,1);
ELSE
UPDATE goods_info SET `num_view` = 1 WHERE `goods` = goods;
END;
#添加日统计,查看日统计是否存在
SELECT `id` INTO dayID FROM day_tongji WHERE `day_time` = DATE(atime);
IF dayID IS NOT NULL THEN
#paytype为1表示支出,2表示收入
IF paytype = 1 THEN
UPDATE day_tongji SET `pay` = `pay` + amount WHERE day_time = DATE(atime);
ELSEIF paytype = 2 THEN
UPDATE day_tongji SET `income` = `income` + amount WHERE day_time = DATE(atime);
END;
ELSE
IF paytype = 1 THEN
INSERT INTO day_tongji VALUES(null,monthID,DATE(atime),amount,0);
ELSEIF paytype = 2 THEN
INSERT INTO day_tongji VALUES(null,monthID,DATE(atime),0,amount);
END;
END;
#添加月统计
IF paytype = 1 THEN
UPDATE month_tongji SET `pay` = `pay` + amount WHERE DATE_FORMAT(mtime,'%Y-%m') = account_time;
ELSEIF paytype = 2 THEN
UPDATE month_tongji SET `income` = `income` + amount WHERE DATE_FORMAT(mtime,'%Y-%m') = account_time;
END;
SELECT 1;
ELSE
SELECT 'no_mid';
END;
END;$$
delimiter ;