Как указать условие ELSE с WHEN? - PullRequest
0 голосов
/ 18 ноября 2011

Учитывая этот код (псевдо)

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 ]

1 голос
/ 18 ноября 2011

Насколько мне известно, вы не сможете расширить выражение MERGE таким образом. Вы можете подсчитать количество таблиц, вставленных в до и после, чтобы определить, попали ли какие-либо строки в раздел NOT MATCHED и были ли вставлены.

Поместите свою логику в оператор IF, используя это количество.

0 голосов
/ 18 ноября 2011

В операторе MERGE в зависимости от ON cond

  • вы выдаете UPDATE и, необязательно, DELETE, если MATCHED
  • , вы выпускаете INSERT if NOT MATRCHED

Ваш код апекса не может быть частью оператора MERGE.Вы должны выяснить другую стратегию для этого.

...