我在 EMS SQL Manager 2005 for MySQL 这个 MySQL 图形客户端下可以顺利运行。但是在 SQLyog MySQL GUI v5.02 这个客户端就会出错。最后找到原因是没有设置好 delimiter 的问题。默认情况下,delimiter “;” 用于向 MySQL 提交查询语句。在存储过程中每个 SQL 语句的结尾都有个 “;”,如果这时候,每逢 “;” 就向 MySQL 提交的话,当然会出问题了。于是更改 MySQL 的 delimiter,上面 MySQL 存储过程就编程这样子了:
mysql> delimiter // -- 改变 MySQL delimiter 为:“//” 末尾不要符号 “;”
mysql>
mysql> drop procedure if exists pr_stat_agent //
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> -- call pr_stat_agent ('2008-07-17', '2008-07-18')
mysql>
mysql> create procedure pr_stat_agent
-> (
-> pi_date_from date
-> ,pi_date_to date
-> )
-> begin
-> -- check input
-> if (pi_date_from is null) then
-> set pi_date_from = current_date();
-> end if;
->
-> if (pi_date_to is null) then
-> set pi_date_to = pi_date_from;
-> end if;
->
-> set pi_date_to = date_add(pi_date_from, interval 1 day);
->
-> -- stat
-> select agent, count(*) as cnt
-> from apache_log
-> where request_time >= pi_date_from
-> and request_time < pi_date_to
-> group by agent
-> order by cnt desc;
-> end; //
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> delimiter ; -- 改回默认的 MySQL delimiter:“;”末尾不要符号 “//”
mysql>
分享到:
相关推荐
初学mysql时,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出现,比如存储过程、触发器、函数等。 学过oracle的人,再来学mysql就会感到很奇怪,百思不得其解。 其实就是告诉mysql解释器,该段命令...
MYSQL导出一个SQL后: DELIMITER $$ DROP TRIGGER IF EXISTS `updateegopriceondelete`$$ CREATE TRIGGER `updateegopriceondelete` AFTER DELETE ON `customerinfo` FOR EACH ROW BEGIN DELETE FROM egoprice ...
在MySQL中,`delimiter`命令是用来设定SQL语句的结束符的,它的主要作用是告诉MySQL解释器何时一个完整的命令结束,从而可以开始执行。在默认情况下,MySQL使用分号(;)作为命令的终止符。这意味着当你在MySQL...
为解决在使用官方客户端类执行mysql脚本时,仅用Execute方法,不支持返回数据结果集的问题, 参照官方MySql.Data.dll中的源码写了一个扩展类,可以执行 MySQL Workbench中可执行的任何脚本,并返回select结果集到一...
### MySQL入门+进阶资源合集 #### 一、MySQL基础知识与入门 ##### 1.1 MySQL基础概念 - **数据库(Database)**:是用于存储数据的逻辑容器,它能够高效地管理和组织数据。 - **表(Table)**:是数据库中用来存储...
- **语句结束符**:一般使用分号,但在某些情况下可以使用`\G`或`\g`,`DELIMITER`命令可以修改语句结束符。 - **SQL的大小写不敏感**:但为了代码的可读性,通常将数据库对象名称和关键字大写,用户定义的标识符...
MySql 使用 DELIMITER 语句来标记函数的开始和结束,而 Oracle 使用 CREATE FUNCTION 语句。在 MySql 中,同时还需要指定函数的定义者和字符集。 2. 变量声明 在 MySql 中,所有的声明必须在函数体之前,全局变量...
MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的应用程序中,包括Web应用程序、企业内部系统等。本文将详细介绍MySQL的一些基本命令以及如何在Java中访问MySQL数据库。 1. **启动MySQL...
MySQL 递归查询实现多分类查询 MySQL 递归查询是指在 MySQL 数据库中使用递归函数来实现树形结构数据的查询,例如部门表中某个部门的所有下属部分或者某个部分的所有上级部门。 在 MySQL 中实现递归查询需要使用...
MySQL数据库在大数据处理中扮演着重要角色,而分区技术是其优化查询性能的关键特性之一。本文将深入探讨如何实现MySQL的自动创建与删除分区,主要关注时间分区,并介绍相关存储过程和事件的设置。 首先,我们需要...
MySQL 存储过程实例 MySQL 存储过程实例详细介绍了 MySQL 存储过程的开发步骤,本节将通过具体的实例讲解 PHP 是如何操纵 MySQL 存储过程的。 创建存储过程 存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 ...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
delimiter $$ DROP PROCEDURE IF EXISTS data; CREATE PROCEDURE data(in i int) BEGIN WHILE i INSERT INTO goods VALUES('', '锤子手机', i); SET i=i+1; END WHILE; END$$ set @id=0; call data(@id); ``` ...
在Linux环境下,MySQL数据库系统是广泛使用的开源关系型数据库管理系统,尤其在服务器端应用中扮演着重要角色。本文将深入探讨Linux下MySQL的基本操作以及如何创建和使用存储过程。 一、MySQL基本操作 1. 安装...
MySQL 雪花算法生成唯一整型ID主键的实现主要针对大数据环境下,需要大量生成全局唯一ID的需求。雪花算法是一种分布式ID生成策略,由Twitter开源,其设计目标是在分布式系统中生成具有全局唯一性、有序性和高并发性...
根据提供的文件信息,我们可以推断出这是一套关于MySQL数据库管理系统的教程集合。MySQL是一种非常流行的开源关系型数据库管理系统(RDBMS),被广泛应用于各种规模的企业和个人项目中。接下来,我们将围绕“传智...
### MySQL进阶知识点详解 #### 一、MySQL高级应用概览 MySQL作为一款广泛使用的开源关系型数据库管理系统,其高级应用对于提升数据处理效率、增强数据安全性等方面具有重要意义。本讲义将深入探讨MySQL的几个核心...