1.如此执行语句不行,需要在 delimiter

  IF not EXISTS (
SELECT
*
FROM
information_schema. COLUMNS
WHERE
table_schema = 'thc_rcm'
AND table_name = 'Cs_AccountBillDetail'
AND column_name = 'shopSetItemId'
) THEN
ALTER TABLE `thc_rcm`.`Cs_AccountBillDetail`
ADD COLUMN `shopSetItemId` varchar(64) DEFAULT NULL COMMENT '套餐的订单明细ID' AFTER `itemId`;
END IF;

2.这样写也不行,因为这样的语句必须在存储过程里执行

DELIMITER //
IF not EXISTS (
SELECT
*
FROM
information_schema. COLUMNS
WHERE
table_schema = 'thc_rcm'
AND table_name = 'Cs_AccountBillDetail'
AND column_name = 'shopSetItemId'
) THEN
ALTER TABLE `thc_rcm`.`Cs_AccountBillDetail`
ADD COLUMN `shopSetItemId` varchar(64) DEFAULT NULL COMMENT '套餐的订单明细ID' AFTER `itemId`;
END IF;
END//
DELIMITER ;

3.OK

DELIMITER //
CREATE PROCEDURE thc_rcm_change ()
BEGIN
IF not EXISTS (
SELECT
*
FROM
information_schema. COLUMNS
WHERE
table_schema = 'thc_rcm'
AND table_name = 'Cs_AccountBillDetail'
AND column_name = 'shopSetItemId'
) THEN
ALTER TABLE `thc_rcm`.`Cs_AccountBillDetail`
ADD COLUMN `shopSetItemId` varchar(64) DEFAULT NULL COMMENT '套餐的订单明细ID' AFTER `itemId`;
END IF;
END//
DELIMITER ;
CALL thc_rcm_change ();
DROP PROCEDURE
IF EXISTS thc_rcm_change;

4.将添加字段变为删除字段则执行不通过,待解???????????

DELIMITER //
CREATE PROCEDURE thc_rcm_change ()
BEGIN
IF not EXISTS (
SELECT
*
FROM
information_schema. COLUMNS
WHERE
table_schema = 'thc_rcm'
AND table_name = 'Cs_AccountBillDetail'
AND column_name = 'shopSetItemId'
) THEN
ALTER TABLE `thc_rcm`.`Cs_AccountBillDetail`
drop COLUMN shopSetItemId;
END IF;
END//
DELIMITER ;
CALL thc_rcm_change ();
DROP PROCEDURE
IF EXISTS thc_rcm_change;

错误提示

Query execution failed

原因:
SQL 错误 [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') THEN
ALTER TABLE `thc_rcm`.`Cs_AccountBillDetail` drop column setMealDetai' at line 1

Query execution failed


注:

windows navicat 中可以执行成功

Mac DBeaver中执行不成功

delimiter 与 存储过程的更多相关文章

  1. MySQL主从环境下存储过程,函数,触发器,事件的复制情况

    下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...

  2. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  3. 我的MYSQL学习心得(十) 自定义存储过程和函数

    我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...

  4. MySQL 存储过程和函数

    概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...

  5. MySQL存储过程及触发器

    一.存储过程 存储过程的基本格式如下: -- 声明结束符 -- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名 ...

  6. mysql创建定时执行存储过程任务

    sql语法很多,是一门完整语言.这里仅仅实现一个功能,不做深入研究. 目标:定时更新表或者清空表. 案例:曾经做过定时清空位置信息表的任务.(然而,当时并未考虑服务器挂掉后的情况) 本次测试:每5s更 ...

  7. MySql 存储过程、触发器和权限问题

    存储过程 1.1 什么是存储过程 存储过程,带有逻辑的sql语句 之前的sql没有条件判断,没有循环 存储过程带上流程控制语句(if  while) 1.2 存储过程特点 1)执行效率非常快!存储过程 ...

  8. Mysql的视图、存储过程、函数、索引全解析

    视图是查询命令结果构成的一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集合,并可以当作表来查询使用. 1创建视图 --格式:C ...

  9. MySQL4:存储过程和函数

    什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...

随机推荐

  1. delphi 右键删除dbgrid行

    Delphi DBGrid右键删除行并提交至数据库.在form上添加,控件TPopupMenu,并指定右键名称:删行 2.编写删除语句: If ADOQuery1.State in [dsEdit, ...

  2. Mysql 悲观锁

    转载:http://chenzhou123520.iteye.com/blog/1860954 悲观锁介绍: 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处 ...

  3. notepad编写html

    notepad写代码的过程: 1.打开notepad,新建一个文档,然后保存,文件的后缀名为.html,代码保存前界面上文件名称为红色,保存后蓝色: 2.保存为html后,进行代码的输入,如果设置好自 ...

  4. 删除文件,copy文件bat

    由于IntelliJ IDEA Build Artifacts速度实在是无法忍受,特整理了一个bat脚本方便maven install后更新jar文件到部署包 del /F /S /Q D:\Idea ...

  5. VMWare 安装 Eclipse

    由于之前已经安装了  OpenJDK 所以 这次我们可以直接下载  eclipse来安装. Eclipse 下载:http://www.eclipse.org/downloads/?osType=li ...

  6. jsp操作MySQL时报错:Operation not allowed after ResultSet closed

    一个stmt对多个rs进行操作引起的ResultSet关闭的错误 解决办法:创建新的stmt,一个rs对应一个stmt

  7. install nagios pnp4nagios on centos 6

    安装配置Apache.PHP(忽略此次安装步骤) 安装nagiosrpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release ...

  8. Python的栈和队列实现

    栈 class Node: def __init__(self, data=None): self.next = None self.data = data class Stack: def __in ...

  9. 自学Linux Shell6.2-用户自定义环境变量

    点击返回 自学Linux命令行与Shell脚本之路 6.2-用户自定义环境变量 1.设置局部用户定义变量 一旦启动bash shell(或者执行一个shell脚本),你就能创建这个shell进程可见的 ...

  10. 自学Aruba4.3-Aruba AC基础配置(2)

    点击返回:自学Aruba之路 自学Aruba4.3-Aruba AC基础配置(2) 网络配置: Vlan .IP address port IP route IP dhcp 1. 网络配置VLAN . ...