zoukankan      html  css  js  c++  java
  • delimiter 与 存储过程

    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中执行不成功 

  • 相关阅读:
    pku夏令营面试
    机器学习实验一SVM分类实验
    面试相关-转载-well,yzl——持续更新
    2715:谁拿了最多奖学金-poj
    1005:I Think I Need a Houseboat-poj
    2810:完美立方-poj
    2943:小白鼠排队-poj
    rem+媒体查询---移动端 设计稿以375
    微信小程序 + mock.js 实现后台模拟及调试
    一个div 实现纸张阴影效果
  • 原文地址:https://www.cnblogs.com/guchunchao/p/9861363.html
Copyright © 2011-2022 走看看