2014-07-11 62 views
0

我有使用参数和前端的内部系统。 所以,这里是难题:根据Case结果插入记录的SQL语句

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

  2. 我需要检查字段是否包含单词“BAD”或“GOOD”,并且我的SQL语句必须不同。而且我不能使用存储过程。必须是纯SQL

像这样

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 
+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(Very很好的例子)