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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM