如何用WHEN指定ELSE条件?

时间:2011-11-18 15:03:22

标签: sql oracle oracle10g oracle-apex

鉴于此代码(伪)

MERGE INTO ...
    (SELECT ... FROM ...) ...
ON (...)
WHEN NOT MATCHED THEN
    INSERT (...) VALUES (...);

    //This is Oracle Apex code
    apex_application.g_unrecoverable_error := true;
    htp.init();
    owa_util.redirect_url('f?p=111:11:&APP_SESSION.::NO:::');

如何添加一个条件,当它与它不匹配时,我需要运行这行代码:

apex_application.g_notification := 'My error';

我不知道如何使其发挥作用。我尝试了一些ELSE和其他WHEN语句,但它似乎不起作用。

2 个答案:

答案 0 :(得分:1)

据我所知,您将无法以这种方式扩展MERGE语句。您可以计算在之前和之后插入的表的计数,以确定是否有任何行落入NOT MATCHED部分并插入。

使用该计数将您的逻辑放在IF语句中。

答案 1 :(得分:0)

取决于MERGE

ON cond声明
  • 如果UPDATE
  • ,您会发出DELETEMATCHED
  • 如果INSERT
  • ,您会发出NOT MATRCHED

您的顶级代码不能成为MERGE声明的一部分。你必须为它找出一个不同的策略。