Oracle の SQL Developer で、行が存在する場合は行を更新し、存在しない場合は行を挿入する SQL クエリを作成しようとしています。主キー (UNITOFMEASURE_USERID) の他に、UNITOFMEASUREID、USERID、および ACTIVE の 3 つの列があります。UNITOFMEASUREID と USERID の組み合わせには一意の制約があるため、値の組み合わせごとに 1 つの行または 0 があります。私は 2 つの異なる 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:
2 番目の配置:
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)
2 番目の配置に対する 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 が括弧が欠落していると考える理由を理解できませんでした。誰でも助けることができますか?