2014-07-11 59 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很好的例子)