我需要在具有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;
但是它告诉我在这种情况下存在语法错误。 我在哪里错了?
答案 0 :(得分:2)
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,但我相信这比上述选择要复杂得多。