Oracle SQL Developer:如果存在更新,则插入缺少右括号编译器错
发布时间:2021-03-16 02:45:15 所属栏目:站长百科 来源:网络整理
导读:我一直在尝试在Oracle的SQL Developer中编写一个SQL查询,如果它存在则会更新一行,如果不存在则插入一行.除主键(UNITOFMEASURE_USERID)外,还有三列:UNITOFMEASUREID,USERID和ACTIVE. UNITOFMEASUREID和USERID的组合存在唯一约束,因此对于每个值组合,可以有一
我一直在尝试在Oracle的SQL Developer中编写一个SQL查询,如果它存在则会更新一行,如果不存在则插入一行.除主键(UNITOFMEASURE_USERID)外,还有三列:UNITOFMEASUREID,USERID和ACTIVE. UNITOFMEASUREID和USERID的组合存在唯一约束,因此对于每个值组合,可以有一行或0.
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) 第二种安排的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认为缺少括号. 解决方法在您的情况下,如果记录匹配条件为真,则需要使用任何过程处理来更新表的活动列,或者如果不匹配则插入新记录.您可以使用 merge在单个语句中执行此操作.merge into unitofmeasure_user using dual on ( unitofmeasureid = :unitOfMeasureId AND userid = :userId ) when matched then update set active = 1 when not matched then insert (unitofmeasureid,userid) values (:unitOfMeasureId,:userId); (编辑:ASP站长) 【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。 |
相关内容
未处理完善
-
无相关信息
最新更新