【问题标题】:How to specify an ELSE condition with WHEN?如何使用 WHEN 指定 ELSE 条件?
【发布时间】:2012-01-01 08:05:44
【问题描述】:

给定这段代码(伪)

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

【问题讨论】:

    标签: sql oracle oracle10g oracle-apex


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      MERGE 语句中取决于ON cond

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

      您的顶点代码不能是MERGE 语句的一部分。你必须为它想出一个不同的策略。

      【讨论】:

      • 嗯..我在问题中的工作......基本上,只要该过程运行,我就会重定向到不同的页面。所以它现在不是有条件的,但我希望它是。我想在不匹配时重定向。并在 MATCHED 时显示错误。
      • 您的代码在merge 语句之外运行,与merge 语句的结果无关。
      猜你喜欢
      • 2019-02-01
      • 2013-10-16
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2020-08-15
      • 2023-04-08
      • 2016-01-24
      • 2021-05-27
      相关资源
      最近更新 更多