SQL语句根据Case结果插入记录

时间:2014-07-11 17:01:25

标签: sql oracle

我有使用参数和前端的内部系统。 所以,这是一个难题:

  1. 更新记录时,会触发触发器并执行SQL语句。

  2. 我需要检查字段是否包含单词" BAD"或" GOOD"我的SQL语句必须不同。我无法使用存储过程。必须是纯SQL

  3. 类似这样的事情

    CASE
      WHEN  (TO_CHAR(?)=TO_CHAR('GOOD')) 
         THEN INSERT VALUES INTO GOOD_TABLE
      WHEN  (TO_CHAR(?)=TO_CHAR('BAD')) 
         THEN INSERT VALUES INTO BAD_TABLE
    END
    

1 个答案:

答案 0 :(得分:1)

您可以使用INSERT FIRST / INSERT ALL命令利用多表插入功能,如下所示:

   INSERT FIRST
   WHEN (TO_CHAR(?)='GOOD') THEN
      INTO GOOD_TABLE
         VALUES(values...)
   WHEN (TO_CHAR(?)='BAD') THEN
      INTO BAD_TABLE
         VALUES(values...)
   SELECT values, ?
   FROM mytable;

<强>参考

Multi table Inserts on Oracle Examples blog(非常好的例子)