Mysql 在存储过程中时无法更改大小写内的表
我试图在MySQL上执行一个相当简单的存储过程,但它总是抛出错误 当条件出现时,会有额外的Mysql 在存储过程中时无法更改大小写内的表,mysql,stored-procedures,Mysql,Stored Procedures,我试图在MySQL上执行一个相当简单的存储过程,但它总是抛出错误 当条件出现时,会有额外的,但为了保持简单,我在这里删除了它们,而这个更简单的版本也不起作用。我在语句2中得到了SQL错误1064:您的SQL语法有错误。。。附近的其他地方请致电finance.sprProce… finance.spProcessTrans\u AddToLogs很好,我在许多其他SP中使用了精确的语法。当s时,在之间处理的代码很好,因为我已经分别对其进行了测试 版本:Windows/MySQL 8.0.12社区
,但为了保持简单,我在这里删除了它们,而这个更简单的版本也不起作用。我在语句2中得到了SQL错误1064:您的SQL语法有错误。。。附近的其他地方请致电finance.sprProce…
finance.spProcessTrans\u AddToLogs
很好,我在许多其他SP中使用了精确的语法。当
s时,在之间处理的代码很好,因为我已经分别对其进行了测试
版本:Windows/MySQL 8.0.12社区
我哪里做错了?我应该能够在一个情况下做这个改变表吗
DELIMITER //
DROP PROCEDURE IF EXISTS finance.spProcessIndex;
CREATE PROCEDURE finance.spProcessIndex(
IN tblName VARCHAR(50),
IN actDesc VARCHAR(50)
)
BEGIN
SET tblName = IFNULL(tblName, 'ERROR');
SET actDesc = IFNULL(actDesc, 'ERROR');
CASE
WHEN actDesc='CREATE' THEN
CASE
WHEN tblName='tbl_transactions' THEN
ALTER TABLE tbl_transactions
MODIFY TransactionID INT AUTO_INCREMENT PRIMARY KEY,
ADD INDEX IDX_ProcessTrans_A (CustomerRef, TransMonth, Product, TransValue, RowReference, TransactionID,ProdInCust_Mnth_Same_SameProd_LowerVal),
ADD INDEX IDX_tbl_transactions_product (Product(25)),
ADD INDEX IDX_tbl_transactions_prodval (Product, TransValue);
ELSE
ALTER TABLE tbl_transactions_tmp_worker_aa
MODIFY TransactionID INT AUTO_INCREMENT PRIMARY KEY,
ADD INDEX IDX_ProcessTrans_A (CustomerRef, TransMonth, Product, TransValue, RowReference, TransactionID,ProdInCust_Mnth_Same_SameProd_LowerVal),
ADD INDEX IDX_tbl_transactions_product (Product(25)),
ADD INDEX IDX_tbl_transactions_prodval (Product, TransValue);
END;
ELSE
CALL finance.spProcessTrans_AddToLogs('spProcessIndex','BREAKPOINT','ERROR: Bad ACTION',CONCAT('A bad ACTION was specified {',actDesc,'}'));
END;
END//
DELIMITER ;
尝试:
分隔符//
--如果存在finance.spProcessIndex,则删除程序;
如果存在finance.spProcessIndex,则删除过程//
.
.
.
案例
当actDesc='CREATE'时
.
.
.
案例
当tblName='tbl\U事务'时
.
.
.
终例;
终例;
.
.
.
定界符;
我甚至不认为它应该是最终的案例,因为我刚用过其他的SPS,结果很好。是否有一个设定的场景,您应该(不)使用END(CASE)?我已在查看文档,但仍不确定。@aSystemOverload:expression,与语句不同,它以END
而不是END CASE
终止。