2012-05-17 43 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 MATCHEDWHEN NOT MATCHED分支是強制性的。在10,其中一人可能會缺失(但不能同時,很明顯)之後。 見http://docs.oracle.com/cd/B10501_01/server.920/a96540/statements_915a.htm#2080942http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016.htm#i2081218

+0

嗯,所以有沒有辦法,我可以告訴它做NOT MATCHED – dave823

+3

爲了避免頭痛,我會使用與生產相同的DB版本進行開發。 –

+0

順便說一下,9i不支持,所以你應該升級。我知道這並不簡單,但即使是10g,在很多方面都更好,更不用說11g了。 –

相關問題