mysql存储过程truncate_存储过程调用和定义,以及 truncate table

今天 大神给了我一个存储过程定义语句要我玩。。。 可是我就没有写过存储过程,而且不喜欢。。。

没办法,,,百度了一通: 下面是例子:

drop procedure if exists proc_summary_data_report_daily;

create procedure proc_summary_data_report_daily (IN querydate date)

begin

set autocommit = 1;

create temporary table if not exists tmp_sum

(

grp_no int,

grp_name varchar(50),

sort_num int,

var_code varchar(50),

var_name varchar(50),

var_length int,

var_value decimal(18,3)

) engine=memory;

begin

insert into tmp_sum(grp_no, grp_name, sort_num, var_code, var_name, var_length, var_value) values

(1, '用户登录', 1, 'loginpersons', '登录人数', 0, 100),

(1, '用户登录', 2, 'logintimes', '登录次数', 0, 800),

(2, '大板销售', 1, 'saleorders', '销售订单数', 0, 40),

(2, '大板销售', 2, 'salenumbers', '销售件数', 0, 110),

(2, '大板销售', 3, 'saleweight', '销售重量', 3, 1300.578),

(2, '大板销售', 4, 'saleamount', '销售金额', 2, 5300000.89);

select grp_no, grp_name, sort_num, var_code, var_name, var_length, var_value

from tmp_sum;

end;

truncate table tmp_sum;

end;

然后应该怎么调用呢? 创建了一个临时表 ,而且是 内存表的。。 然后我 查询看看 select * from tmp_sum 发现报错,并没有这个表。。。

晕了。。。 那明明声明了啊,而且可以看到有一个 存储过程函数了。

调用这个存储过程? 我们调用sql 函数。比如 : SELECT proc_summary_data_report_daily(NOW()); 发现不行啊,不是一个函数。

百度一下,原来要使用 call : -- 调用存储过程 call proc_summary_data_report_daily(NOW());

OK,数据出来了。

然后看到 truncate table tmp_sum; 这不是删除表的数据? 怎么会 执行存储过程就 有 内容了? 估计是 ,先查询出来,,,放入缓存里面。然后清空表数据。下次 调用这个存储过程的时候。 就又是新的数据了。 下面是 更详细的说明:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值