在Maria DB中,我可以将CASE与表一起使用吗?

时间:2019-09-16 19:20:11

标签: mysql sql stored-procedures mariadb case

我需要在具有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;

但是它告诉我在这种情况下存在语法错误。 我在哪里错了?

1 个答案:

答案 0 :(得分:2)

CASE syntax不能用于在要INSERT(或UPDATESELECT)中选择的夹心表中进行选择。

一种解决方案是将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,但我相信这比上述选择要复杂得多。