1. 程式人生 > >delimiter 與 存儲過程

delimiter 與 存儲過程

字段 alter mys mon 提示 version check pan respond

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 與 存儲過程