2012-05-17 42 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了。 –

相关问题