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

问题描述

我在 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(IN CID INT,IN CTokenTime DATETI...

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

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

我是 MysqL 命令和语法的新手,如果我犯了任何错误,请提供最佳方法

解决方法

  1. MySQL(与大多数其他 DBMS 不同)不喜欢用 -- 引入的注释,其中 -- 后面没有空格。
  2. 您需要使用 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 ;