编写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
分享到:
相关推荐
通过阅读MySQL文档和相关的技术文章,如“Mysql之SQL Mode用法详解”、“MySQL5.7中的sql_mode默认值带来的坑及解决方法”等,可以深入理解各种SQL模式的作用和应用场景,从而更好地优化和维护你的数据库系统。
本文将详细讲解如何在Spring MVC和MyBatis集成的项目中调用MySQL存储过程。 首先,让我们理解存储过程的概念。存储过程是在数据库中预编译的一组SQL语句,可以包含输入、输出和内部参数,能够执行复杂的业务逻辑。...
与之前的版本相比,有一些新的变量引入,如`optimizer_trace`用于调试查询优化过程,`innodb_read_only`控制InnoDB表是否可写,以及`sql_mode`用于设置SQL语法的严格程度等。了解这些变量的用法和影响能帮助优化...
- **MySQL存储引擎概述**:概览MySQL支持的各种存储引擎及其特点。 - **各种存储引擎的特性**:详细介绍每种存储引擎的特性和适用场景。 - **如何选择合适的存储引擎**:根据不同的业务需求推荐合适的存储引擎。 ##...
-- 设置当前会话的sql_mode ``` 全局系统变量如`max_connections`,在设置时必须加上`GLOBAL`关键字,否则会默认为设置会话变量。 了解这些特殊的运算符和变量对于优化MySQL查询和处理数据至关重要。正确使用...
- `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秒。 - `...
在MySQL、Oracle、SQL Server等数据库中编写存储过程。例如,一个简单的存储过程可能是用于增删改查操作的。 3. **数据访问层(DAO)**: 在Struts2中,通常会创建一个DAO(数据访问对象)类来处理与数据库的交互...
7. **SQL模式设置**:在MySQL 5.0及以上版本,可以使用`SET sql_mode=''`来清除当前的SQL模式,以避免可能影响备份操作的特定模式。 8. **查询执行**:`query()`函数用于执行SQL语句。在本脚本中,还包含了一个方法...
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER # 开启查询缓存 explicit_defaults_for_timestamp=true skip-grant-tables ``` 注意:这里的 `skip-grant-tables` 参数意味着MySQL启动时不验证用户名和密码...
- **MySQL存储引擎概述**:概览MySQL支持的各种存储引擎。 - **各种存储引擎的特性**:详细介绍每种存储引擎的特点及其适用场景。 - **如何选择合适的存储引擎**:基于应用场景和需求选择最合适的存储引擎。 **第三...
在Qt5框架下,开发一个应用来将数据存入MySQL数据库并不复杂,但要将整个过程封装成非代码形式的可执行程序,需要对Qt和MySQL的集成有深入理解。以下是一些关键知识点: 1. **Qt5与MySQL连接**: - Qt5提供了SQL...
### JSP连接MySQL数据库的关键步骤 ...整个过程包括了JSP环境的搭建、Tomcat虚拟目录的设置、MySQL的安装与配置以及JSP与MySQL的连接实现。这些步骤不仅适用于初学者,对于有一定经验的开发者来说也是很好的参考。
1. **SQL Dump**: SQL Dump是一种将数据库或表的内容导出为SQL脚本的过程,以便于备份或迁移。在这个例子中,使用的是`phpMyAdmin`工具来执行SQL Dump操作。 2. **SQL命令详解**: - `SET SQL_MODE="NO_AUTO_VALUE...
《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...
JDBC是Java访问数据库的标准API,通过编写Java代码,开发人员可以连接到MySQL服务器,执行SQL语句,处理查询结果。 此外,课程设计可能还会涉及到Servlet、JSP(JavaServer Pages)、MVC(Model-View-Controller)...
在C#编程环境中,将图片保存到MySQL数据库中通常涉及到几个关键步骤,包括数据库的设计、C#连接数据库的代码编写以及图片数据的处理。这里,我们主要探讨如何使用C#来实现这一功能。 首先,我们需要在MySQL数据库中...
在读取数据库中的二进制图片时,我们需要编写SQL查询来获取相关记录。例如,如果你有一个名为`Photos`的表,其中包含`ImageData`列存储二进制图片,一个简单的查询可能如下: ```sql SELECT ImageData FROM Photos ...