我需要在具有 CASE 条件的两个表之间的存储过程中进行选择。
CREATE PROCEDURE PRO (...., TypeA TINYTEXT)
BEGIN
....
INSERT INTO
CASE TypeA
WHEN ValueA THEN `database`.`TableA`
WHEN ValueB THEN `database`.`TableB`
END
(`ColumnA`, `ColumnB`, `ColumnC`) VALUES (....);
END
...
...
END;
但它告诉我在这种情况下存在语法错误。 我哪里错了?
最佳答案
CASE
syntax不能用于选择要INSERT
(或UPDATE
,或SELECT
)的表。
解决方案是将 CASE
移到查询之外,例如:
CASE TypeA
WHEN 'ValueA' THEN INSERT INTO `database`.`TableA` (`ColumnA`, `ColumnB`, `ColumnC`) VALUES (....);
WHEN 'ValueB' THEN INSERT INTO `database`.`TableB` (`ColumnA`, `ColumnB`, `ColumnC`) VALUES (....);
END CASE
这也可以用 IF
syntax 来完成.
另一种选择是使用动态 SQL,但我认为这会比上述选项更复杂。
关于mysql - 在 Maria DB 中,我可以将 CASE 与表一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57963179/