如何在 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 命令和语法的新手,如果我有任何错误,请提供最佳方法。
- MySQL(与大多数其他 DBMS 不同)不喜欢用
--
引入的注释,其中 --
. 后面没有 space
- 您需要终止所有语句,包括
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 ;
我在 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 命令和语法的新手,如果我有任何错误,请提供最佳方法。
- MySQL(与大多数其他 DBMS 不同)不喜欢用
--
引入的注释,其中--
. 后面没有 space
- 您需要终止所有语句,包括
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 ;