2012-05-17 1 views
2

У меня есть оператор SQL MERGE, отлично работающий в Oracle 11g (среда разработки), но он дает мне следующую ошибку, когда я пытаюсь запустить ее в Oracle 9i (производственная среда): ORA-00905: отсутствует ключевое слово.Оператор SQL Merge работает в Oracle 11g, но не 9i

Есть ли способ сделать эту работу в Oracle 9i? Вот заявление:

MERGE INTO non_asset dst 
    USING (SELECT tag, comments, computer_role 
      FROM non_asset_backup 
      WHERE sub_group = 'AALVOIP') src 
    ON (dst.tag = src.tag) 
    WHEN MATCHED THEN 
     UPDATE 
     SET dst.comments = src.comments, 
      dst.computer_role = src.computer_role 
+0

Это может помочь: http://nuijten.blogspot.com/2009/07/delete-in-merge-statement.html –

ответ

3

В 9 я как WHEN MATCHED и WHEN NOT MATCHED ветви были обязательными. В 10 g и после того, как один из них может отсутствовать (но не оба, очевидно). См http://docs.oracle.com/cd/B10501_01/server.920/a96540/statements_915a.htm#2080942 vs. http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016.htm#i2081218

+0

Хм, так что есть способ, которым я могу сказать это сделать ничего, когда НЕ СООТВЕТСТВУЕТ – dave823

+3

Чтобы избежать головных болей, я бы использовал ту же версию БД для разработки, что и производство. –

+0

BTW, 9i ​​не поддерживается, поэтому вам следует обновить. Я знаю, что это не просто, но даже 10g намного лучше во многих отношениях, не говоря уже об 11g. –