2011-11-18 59 views
0

鉴于此代码(伪)如何用WHEN指定ELSE条件?

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语句,但它似乎不起作用。

回答

1

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

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

0

MERGE声明取决于ON cond

  • 发出的UPDATE和可选DELETE如果MATCHED
  • 您发出INSERT如果NOT MATRCHED

你的顶点代码不能被部分MERGE声明。你必须找出一个不同的策略。

+0

嗯..我在问题中有什么作品...基本上,我重定向到不同的页面,只要该过程运行。所以现在不是有条件的,但我希望它是。我想在不匹配时重定向。并且在MATCHED时显示错误。 – antonpug

+0

您的代码在merge语句外运行,与merge语句的结果无关。 – Raihan