【问题标题】:getting error on Merge Statement - ORA-01747合并语句出错 - ORA-01747
【发布时间】:2021-03-25 15:09:43
【问题描述】:

我是 oracle 数据库的新手(一直在研究 DB2 和 cobol)。我有一个关于合并声明的问题。从 Javascript,我试图在 Oracle DB 中的表中插入一行。如果插入失败,则计划进行更新。我在 DB2 中使用了 Merge 语句,当检查时,oracle 中的 Merge SQL 类似于我在 DB2 中使用的。以下是我的合并声明。

合并到 TBL_1 O 使用(从 TBL_1 中选择 COL1、COL2、COL3,其中 COL1='A' AND COL2='B' AND COL3 = 'C')M 开(O.COL1 = M.COL1 和 O.COL2 = M.COL2 和 O.COL3=M.COL3) 匹配时更新 SET O.COL4 = 'XYZ' ,O.COL5 = 123 不匹配时插入 (((O.COL1,O.COL2,O.COL3,O.COL4,O.COL5)值('A','B','C','XYZ',123)) ;

当我在 sql developer tool 中执行查询时,我收到一条错误消息 SQL 错误: ORA-01747: invalid.user.table.column, or column specification

感谢您对此的任何帮助。 谢谢

【问题讨论】:

    标签: merge ora-01747


    【解决方案1】:

    我以前使用过合并语句,我唯一看到的怀疑是 INSERT 子句上的一对额外的括号。我还会从列列表中删除表别名。

    列名也可能有误,但我无法根据所提供的内容为您验证。

     MERGE INTO TBL_1 O 
        USING 
        (SELECT COL1, 
            COL2, 
            COL3 FROM TBL_1 
          WHERE COL1='A' 
            AND COL2='B' 
            AND COL3 = 'C') M 
        ON (O.COL1 = M.COL1 AND O.COL2 = M.COL2 AND O.COL3=M.COL3) 
    
        WHEN MATCHED THEN UPDATE 
            SET O.COL4 = 'XYZ' 
               ,O.COL5 = 123 
        WHEN NOT MATCHED THEN INSERT
        (   COL1, 
            COL2, 
            COL3, 
            COL4, 
            COL5
        ) VALUES ('A','B','C','XYZ',123) ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      相关资源
      最近更新 更多