侧边栏壁纸
  • 累计撰写 188 篇文章
  • 累计收到 24 条评论

mysql之函数的应用

五好
2021-12-08 / 0 评论 / 690 阅读 / 正在检测是否收录...

先上代码

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

评论 (0)

取消