1. 创建存储过程遇到的一个问题

存储过程:一组完成特定功能的sql语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数来调用执行

begin

***一系列特定功能的sql语句,一条sql语句记得以分号结束***

end


问题:

1. declare 声明varchar变量时一直语法问题报错,原因是mysql ;(分号问题),借助delimiter解决问题。默认情况下,delimiter是分号;。在命令行客户端中,如何有一行命令以分号结束,则回车后,mysql会执行该命令。但有时候,不希望mysql这么做。在为可能输入较多的语句中,且语句中也包含分号情况,此时不让mysql自动执行,就需要借助delimiter将分号换成其他符合,如// 或 $$。只有当// 或 $$出现之后,mysql解释器才会执行这段语句。


实际例子:

比较时间戳,删除30天前数据

创建存储过程:

delimiter //

CREATE PROCEDURE del_mydatatable_crontab()

BEGIN

DECLARE date_string varchar(100);

DECLARE  date_string2 varchar(100);

DECLARE  date_string3 varchar(100);

SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) INTO date_string;

SELECT CONCAT(date_string," 00:00:00") INTO date_string2;

SELECT UNIX_TIMESTAMP(DATE(date_string2)) INTO date_string3;

DELETE FROM `MYDATATABLE` WHERE `timestamp` < date_string3;

END

//

执行存储过程:call del_mydatatable_crontab();

查看数据库已有的存储过程:show procedure status;



某些参考提取:

http://www.cnblogs.com/cxxjohnson/p/5965194.html

http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html

http://blog.csdn.net/huihuangjiuai/article/details/37881123

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载自这里 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Sto...
    杜七阅读 7,017评论 4 27
  • 原文链接 MySQL存储过程详解 1.存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然...
    亚斯咪妮阅读 7,517评论 1 30
  • 任务需求:定时执行的任务,调用存储过程,进行数据迁移。 存储过程相关总结:(存储过程的创建 不能伴随有if exi...
    时待吾阅读 8,304评论 0 4
  • mysql 高级语句 一、存储过程 1.什么是存储过程: 就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻...
    君满楼001阅读 8,429评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,601评论 18 399

友情链接更多精彩内容