`

编写mysql存储过程时,最好设置SQL_MODE

阅读更多
编写mysql存储过程时,最好设置SQL_MODE,比如下面的例子:
DELIMITER //
 CREATE FUNCTION test(p_first TINYINT, p_second TINYINT) RETURNS TINYINT
 BEGIN
     DECLARE v_result TINYINT;
     SET v_result := p_first + p_second;
     RETURN v_result;
 END//
 DELIMITER ;



  看上去是正确的,比如调用:
mysql> select test(126,1);
+-------------+
| test(126,1) |
+-------------+
|         127 |
+-------------+
1 row in set (0.00 sec)


但:
mysql> select test(127,1);
+-------------+
| test(127,1) |
+-------------+
|         127 |
+-------------+
1 row in set, 1 warning (0.00 sec)
就错误了,因为用了tinyint,
所以,强烈建议编译存储过程时,设置sql_mode,比如:
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TABLES';
  然后当再运行存储过程时,可以有提示:
mysql> select test(127,1);
ERROR 1264 (22003): Out of range value for column 'v_result' at row 1

3
3
分享到:
评论
1 楼 lucky_java 2012-05-18  
 

相关推荐

    spring mvc + mybatis 调用mysql 存储过程

    本文将详细讲解如何在Spring MVC和MyBatis集成的项目中调用MySQL存储过程。 首先,让我们理解存储过程的概念。存储过程是在数据库中预编译的一组SQL语句,可以包含输入、输出和内部参数,能够执行复杂的业务逻辑。...

    mysql8.0帮助文档

    与之前的版本相比,有一些新的变量引入,如`optimizer_trace`用于调试查询优化过程,`innodb_read_only`控制InnoDB表是否可写,以及`sql_mode`用于设置SQL语法的严格程度等。了解这些变量的用法和影响能帮助优化...

    MySql中特殊运算符的使用方法总结

    -- 设置当前会话的sql_mode ``` 全局系统变量如`max_connections`,在设置时必须加上`GLOBAL`关键字,否则会默认为设置会话变量。 了解这些特殊的运算符和变量对于优化MySQL查询和处理数据至关重要。正确使用...

    Mysql5.7.42一键安装脚本.docx

    - `sql_mode='ONLY_FULL_GROUP_BY'`: 设置MySQL的SQL模式。 - `log_error = /data/base/mysql-5.7.42/log/mysql-error.log`: 设置错误日志文件路径。 - `long_query_time = 2`: 设置慢查询阈值为2秒。 - `...

    struts2 存储过程

    在MySQL、Oracle、SQL Server等数据库中编写存储过程。例如,一个简单的存储过程可能是用于增删改查操作的。 3. **数据访问层(DAO)**: 在Struts2中,通常会创建一个DAO(数据访问对象)类来处理与数据库的交互...

    PhpMysql数据库备份脚本.doc

    7. **SQL模式设置**:在MySQL 5.0及以上版本,可以使用`SET sql_mode=''`来清除当前的SQL模式,以避免可能影响备份操作的特定模式。 8. **查询执行**:`query()`函数用于执行SQL语句。在本脚本中,还包含了一个方法...

    mysql5.7.19解压缩版win64部署

    sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER # 开启查询缓存 explicit_defaults_for_timestamp=true skip-grant-tables ``` 注意:这里的 `skip-grant-tables` 参数意味着MySQL启动时不验证用户名和密码...

    MySQL技术资料来自网易的经验总结

    - **MySQL存储引擎概述**:概览MySQL支持的各种存储引擎。 - **各种存储引擎的特性**:详细介绍每种存储引擎的特点及其适用场景。 - **如何选择合适的存储引擎**:基于应用场景和需求选择最合适的存储引擎。 **第三...

    将数据存入mysql(Qt5编写) 非代码为可执行程序

    在Qt5框架下,开发一个应用来将数据存入MySQL数据库并不复杂,但要将整个过程封装成非代码形式的可执行程序,需要对Qt和MySQL的集成有深入理解。以下是一些关键知识点: 1. **Qt5与MySQL连接**: - Qt5提供了SQL...

    全国省市县2012 mysql

    1. **SQL Dump**: SQL Dump是一种将数据库或表的内容导出为SQL脚本的过程,以便于备份或迁移。在这个例子中,使用的是`phpMyAdmin`工具来执行SQL Dump操作。 2. **SQL命令详解**: - `SET SQL_MODE="NO_AUTO_VALUE...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...

    javaweb课程设计基础知识+教程+课件_MySQL安装图解.doc

    JDBC是Java访问数据库的标准API,通过编写Java代码,开发人员可以连接到MySQL服务器,执行SQL语句,处理查询结果。 此外,课程设计可能还会涉及到Servlet、JSP(JavaServer Pages)、MVC(Model-View-Controller)...

    (C#)mysql中保存图片源码

    在C#编程环境中,将图片保存到MySQL数据库中通常涉及到几个关键步骤,包括数据库的设计、C#连接数据库的代码编写以及图片数据的处理。这里,我们主要探讨如何使用C#来实现这一功能。 首先,我们需要在MySQL数据库中...

    ReadImages_sourcel1r_dieq2j_读取SQL数据库二进制图片_

    在读取数据库中的二进制图片时,我们需要编写SQL查询来获取相关记录。例如,如果你有一个名为`Photos`的表,其中包含`ImageData`列存储二进制图片,一个简单的查询可能如下: ```sql SELECT ImageData FROM Photos ...

Global site tag (gtag.js) - Google Analytics