如何在 MYSQL 版本(6.0.11-alpha-community) 中创建带有 CRUD 操作的参数化存储过程

How to create a parameterized STORED PROCEDURE with CRUD operation in MYSQL Version(6.0.11-alpha-community)

我在 MYSQL 版本(6.0.11-alpha-community)

中创建了一个带有 CRUD 操作的参数化存储过程
DELIMITER $$

CREATE PROCEDURE `mae`.`USP_CustomersToken_CURD`(IN CID INT , IN CName VARCHAR(50), IN CToken VARCHAR(250), IN CTokenTime DATETIME , IN OPType INT)

 BEGIN

IF (OPType = 1) --Insert
THEN
INSERT INTO tbl_CustomersTokenInfo (ID, CustomerName, Token, TokenTime) VALUES (CID, CName, CToken, CTokenTime)

ELSEIF (OPType = 2) --delete
THEN
DELETE FROM tbl_CustomersTokenInfo WHERE ID = CID

ELSEIF (OPType = 3) --Update
THEN
UPDATE tbl_CustomersTokenInfo SET CustomerName = CName, Token = CToken , TokenTime = CTokenTime WHERE ID = CID

ELSEIF (OPType = 4) --Select
THEN
SELECT * FROM tbl_CustomersTokenInfo WHERE ID =CID

ELSEIF (OPType = 5)--Fetch 
THEN
SELECT * FROM tbl_CustomersTokenInfo
END IF

    END$$

DELIMITER ;

但是当我执行此 SP 时,出现以下错误:

查询:CREATE PROCEDURE mae.USP_CustomersToken_CURD(在 CID INT 中,在 CName VARCHAR(50)中,在 CToken VARCHAR(250)中,在 CTokenTime DATETI 中...

错误代码:1064 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 'THEN 附近使用的正确语法 INSERT INTO tbl_CustomersTokenInfo (ID, CustomerName, Token, TokenTime) VAL' 在第 4 行

执行时间:0 秒 传输时间:0 秒 总时间:0 秒

我是 MYSQL 命令和语法的新手,如果我有任何错误,请提供最佳方法。

  1. MySQL(与大多数其他 DBMS 不同)不喜欢用 -- 引入的注释,其中 --.
  2. 后面没有 space
  3. 您需要终止所有语句,包括 IF 语句(在 END IF 之后),并带有 ;.

更正:

DELIMITER $$

CREATE PROCEDURE `mae`.`USP_CustomersToken_CURD`(IN CID INT , IN CName VARCHAR(50), IN CToken VARCHAR(250), IN CTokenTime DATETIME , IN OPType INT)

 BEGIN

IF (OPType = 1) -- Insert
THEN
INSERT INTO tbl_CustomersTokenInfo (ID, CustomerName, Token, TokenTime) VALUES (CID, CName, CToken, CTokenTime);

ELSEIF (OPType = 2) -- delete
THEN
DELETE FROM tbl_CustomersTokenInfo WHERE ID = CID;

ELSEIF (OPType = 3) -- Update
THEN
UPDATE tbl_CustomersTokenInfo SET CustomerName = CName, Token = CToken , TokenTime = CTokenTime WHERE ID = CID;

ELSEIF (OPType = 4) -- Select
THEN
SELECT * FROM tbl_CustomersTokenInfo WHERE ID =CID;

ELSEIF (OPType = 5)-- Fetch 
THEN
SELECT * FROM tbl_CustomersTokenInfo;
END IF;

    END$$

DELIMITER ;