码迷,mamicode.com
首页 > 其他好文 > 详细

delimiter 与 存储过程

时间:2018-10-27 16:12:19      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:套餐   format   div   you   err   comm   check   schema   mys   

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

 

delimiter 与 存储过程

标签:套餐   format   div   you   err   comm   check   schema   mys   

原文地址:https://www.cnblogs.com/guchunchao/p/9861363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!