先上代码
DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `aa`(ids int,tim varchar(16)) RETURNS int(11)
BEGIN
declare aaa int;
if tim>0 then
set @tim=tim;
set @st = UNIX_TIMESTAMP(@tim);
set @et=UNIX_TIMESTAMP(DATE_ADD(@tim, INTERVAL 1 MONTH));
select sum(m) into aaa from(
SELECT
`money_out`.`bid` AS `bid`,
(SUM(`money_out`.`money`) / 100) AS `m`
FROM
`money_out`
where bid=ids and ctime>=@st and ctime<@et
union
select
`money_out_book`.`bid` AS `bid`,
(SUM(`money_out_book`.`money`) / 100) AS `m`
FROM
`money_out_book`
where bid=ids and ctime>=@st and ctime<@et) a;
else
select sum(m) into aaa from(
SELECT
`money_out`.`bid` AS `bid`,
(SUM(`money_out`.`money`) / 100) AS `m`
FROM
`money_out`
where bid=ids
union
select
`money_out_book`.`bid` AS `bid`,
(SUM(`money_out_book`.`money`) / 100) AS `m`
FROM
`money_out_book`
where bid=ids) a;
end if;
RETURN aaa;
END$$
DELIMITER ;
功能:该函数...先不说。
CREATE DEFINER=`root`@`%` FUNCTION `aa`(ids int,tim varchar(16)) RETURNS int(11)
创建一个函数名称是 aa 可以接收 2个参数 ids,和 tim 返回 一个整型的数据。
declare aaa int;
定义一个变量
set @tim=tim;
set @st = UNIX_TIMESTAMP(@tim);
set @et=UNIX_TIMESTAMP(DATE_ADD(@tim, INTERVAL 1 MONTH));
输入参数的传递 与转换
select sum(m) into aaa from(...) tmp
把查询到的数据写入到变量 aaa
RETURN aaa;
返回aaa
OK,这个函数的功能是 计算给定的 书ID和时间 返回 对应的 的消费情况。如果有时间输入 则返回指定时间的数据, 否则返回该书所有的数据。
这里是关于mysql 触发器的应用
评论 (0)