同事给的一个存储过程有点问题,测试发现" IF  date_format(sysdate(),'%H:%i:%s') >

From_Time AND date_format(sysdate(),'%H:%i:%s') < End_Time THEN"

这个语句有问题。创建如下存储过程进行分析:

mysql> delimiter

//

mysql> create

procedure proc_t(in from_time time,in end_time time)

-> begin

->

IF

date_format(sysdate(),'%H:%i:%s') > From_Time AND date_format(sysdat

e(),'%H:%i:%s') <

End_Time THEN

->

select 'a';

->

else

->

select 'b';

->

end if;

-> end //

Query OK, 0 rows

affected (0.00 sec)

mysql> delimiter

;

该存储过程只是判断是否满足条件,执行结果是报错:

mysql> call

proc_t('23:00:00','23:50:00');

ERROR 1267 (HY000):

Illegal mix of collations (gbk_chinese_ci,COERCIBLE) and (la

tin1_swedish_ci,NUMERIC)

for operation '>'

如果按照1267错误去找,可能就偏离答案了。实际执行的存储过程中有对该报错的处理,因此结果不符合预期,但也没有报错。

由于输入变量from_time和end_time都是时间类型,而比较时使用date_format(sysdate(),'%H:%i:%s')生成的是字符串,不具有可比性,造成报错。

通过time函数,将比较运算符两边修改为都是时间格式,就不会报错了:

mysql> create

procedure proc_t(in from_time time,in end_time time)

-> begin

->

IF  time(sysdate()) > From_Time

AND time(sysdate()) < End_Time THEN

->

select 'a';

->

else

->

select 'b';

->

end if;

-> end //

Query OK, 0 rows

affected (0.00 sec)

mysql> delimiter

;

mysql>  call proc_t('23:00:00','23:59:00');

+---+

| a |

+---+

| a |

+---+

1 row in set (0.01

sec)

Query OK, 0 rows

affected (0.01 sec)

mysql存储过程1267_mysql存储过程一例相关推荐

  1. 系列 | 高性能存储-MySQL数据库之存储过程揭秘

    墨墨导读:本文介绍什么是存储过程?为什么要使用存储过程?如何使用存储过程?如何去使用存储过程以及怎么执行存储过程. DBASK小程序已经开设"MySQL 数据库专栏",欢迎大家关注 ...

  2. mysql创建存储过程意义_浅谈一下mySql中创建存储过程

    首先说一下为什么要使用存储过程,存储过程是在数据库中预编译的程序代码,其执行效率显然要比从程序端传过去的sql语句要高的多,这样既可以节省网络带宽,又可以加快sql的执行速度,可以很好的提高系统的性能 ...

  3. mysql与oracle存储过程_MySQL与Oracle差异比较之五存储过程Function

    存储过程&Function 编号 类别 oracle Mysql 注释 1 创建存储过程语句不同 create or replace procedure P_ADD_FAC( id_fac_c ...

  4. MySql 自定义函数,存储过程,游标的使用

    首先整理一下mysql内置的一些函数 MySQL内置函数 一.字符函数 (1)CONCAT()//字符连接 (2)CONCAT_WS()//使用指定的分隔符进行字符连接 (3)FORMAT()//数字 ...

  5. mysql与oracle存储过程_mysql与oracle存储过程对比

    一.创建存储过程语句不同 mysql DROP PROCEDURE IF EXISTS `SD_USER_P_ADD_USR`; create procedure P_ADD_FAC(id_fac_c ...

  6. mysql存储过程 limit_mysql存储过程 limit

    SQL分页查询代码 SQL Server 关于分页 SQL 的资料许多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是颠末预编译的 ...

  7. mysql视图及存储过程

    目录 mysql之视图 前言 理解: 视图语句 表用例-student 视图检查选项 举例: 注意: 视图的更新 视图的作用 mysql之存储过程 存储过程定义 存储过程的特性 关于存储过程的创建及删 ...

  8. MySQL视图触发器存储过程内外链接数据锁

    MySQL视图触发器存储过程内外链接数据锁 视图 什么是视图 是一个虚拟表,其内容由查询定义.同真实的一样,视图包含一系列带有名称的列和行数据 视图有什么用 视图的作用就是缓存数据,可以这么理解,我把 ...

  9. MySQL与ORACLE 存储过程的区别

    存储过程&Function 编号 类别 ORACLE MYSQL 注释 1 创建存储过程语句不同 create or replace procedure P_ADD_FAC(    id_fa ...

最新文章

  1. Python的命名空间和作用域
  2. 成功解决 编程语言代码结果中输出-9223372036854775808的数据
  3. WWF系列之----关于Host与WorkflowInstance之间的通讯
  4. 地理生物高考成绩查询2021,2021北京中考地理生物成绩查询时间【已公布】
  5. 等不到那人,回不到人间——dbGet(四)
  6. UnityShader1:渲染流水线
  7. Python修改Mp3文件名称
  8. python函数名的作用_Python:函数名称空间与作用域:
  9. 树上10只鸟,开枪打死1只,还剩几只?
  10. 警报:愚人节中国黑客可能发动史上最强病毒攻击
  11. 有关csdn博客账号注销说明
  12. DPDK Release 21.02
  13. zblog插件全自动采集伪原创发布插件免费
  14. 电脑如何录屏?分享4个屏幕录制的好方法,建议收藏
  15. 工作之外的闲暇时光(玩魔方)
  16. 认识浏览器:浏览器内核/页面加载/DOM和DOM树
  17. 数据库_关键字的使用
  18. 反向传播算法的理论基础,神经网络反向传播算法
  19. Pyhton可视化(1): 历年中国大学学术排行榜
  20. Qt事例: QScrollArea滚动区域

热门文章

  1. nginx代理设置域名跳转/域名重定向
  2. Internet Explorer 11 Enterprise Mode 排错
  3. thread 在 surfaceview 中的使用与删除
  4. 模拟input type=file
  5. 《xUnit Test Patterns》学习笔记6 - Test Double
  6. windows下mongodb的安装与配置
  7. 在Linux上挂载Windows共享文件夹,如何开机自动挂载(mount)
  8. Ajax异步请求登录
  9. ad 卡尔曼_对Kalman(卡尔曼)滤波器的理解
  10. swift瀑布流实现_CSS 实现瀑布流布局(display: flex)