Oracle SQL Developer:如果存在更新,则插入缺少右括号编译器错误

 殷小苗_535 发布于 2023-03-19 22:15
  • php
  • 我一直在尝试在Oracle的SQL Developer中编写一个SQL查询,如果它存在则会更新一行,如果不存在则插入一行.除主键(UNITOFMEASURE_USERID)外,还有三列:UNITOFMEASUREID,USERID和ACTIVE.对UNITOFMEASUREID和USERID的组合有一个唯一的约束,因此对于每个值的组合,有一行或0.我一直在尝试两种不同的SQL排列,并且它们都返回类似的编译错误,抱怨缺少右括号.这就是我的尝试:第一个安排:

    UPDATE NORSEMEN.UNITOFMEASURE_USER SET (ACTIVE=1) WHERE UNITOFMEASUREID=:unitOfMeasureId AND USERID=:userId
    IF @@ROWCOUNT=0
        INSERT INTO NORSEMEN.UNITOFMEASURE_USER (UNITOFMEASUREID, USERID) VALUES (:unitOfMeasureId, :userId)
    

    首次安排的SQL Developer错误响应:

    Error at Command Line:1 Column:46
    Error report:
    SQL Error: ORA-00907: missing right parenthesis
    00907. 00000 -  "missing right parenthesis"
    *Cause:    
    *Action:
    

    第二种安排:

    IF EXISTS (SELECT * FROM NORSEMEN.UNITOFMEASURE_USER WHERE UNITOFMEASUREID=:unitOfMeasureId AND USERID=:userId)
        UPDATE NORSEMEN.UNITOFMEASURE_USER SET (ACTIVE = 1) UNITOFMEASUREID=:unitOfMeasureId AND USERID=:userId
    ELSE
        INSERT INTO NORSEMEN.UNITOFMEASURE_USER (UNITOFMEASUREID, USERID) VALUES (:unitOfMeasureId, :userId)
    

    第二种安排的SQL Developer错误响应:

    Error at Command Line:2 Column:47
    Error report:
    SQL Error: ORA-00907: missing right parenthesis
    00907. 00000 -  "missing right parenthesis"
    *Cause:    
    *Action:
    

    我无法弄清楚为什么SQL Developer认为缺少括号.有人可以帮忙吗?

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有