Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在存储过程中时无法更改大小写内的表_Mysql_Stored Procedures - Fatal编程技术网

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社区

我试图在MySQL上执行一个相当简单的存储过程,但它总是抛出错误

当条件出现时,会有额外的
,但为了保持简单,我在这里删除了它们,而这个更简单的版本也不起作用。我在语句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
终止。