2017-04-06 27 views
-3

SQL ORA-00900:無効なSQL文

IF EXISTS(SELECT * FROM MERC_ADM_VERSION)then UPDATE MERC_ADM_VERSION SET 
VER_VALEUR = 20150409 WHERE VER_CLE = 'MEAD' ELSE INSERT INTO MERC_ADM_VERSION 
('VER_VALEUR', 'VER_CLE') VALUES (20150409, 'MEAD'); 

ORA-00900を助けてください:無効なSQL文

+2

「IF」はOracle SQLの一部ではありません。これはPL/SQL構文の一部です。おそらくあなたは 'MERGE'ステートメントを探しているでしょうか? –

+1

あなたはOracle SQLをどこで借りましたか? Oracle SQL文の本または参照を検索します。 –

+0

ここをクリックしてください:https://livesql.oracle.com/apex/livesql/file/index.html –

答えて

0

INSERT文の列から単一引用符を削除します。代わりに

('VER_VALEUR', 'VER_CLE') 

それは

(VER_VALEUR, VER_CLE) 
+0

これは動作しません:(、thnks –

+0

これはストアド・プロシージャまたはファンクションにありますか?IFはPL-SQLの一部ですが、 – Sumit

+0

これは問題ですが、ORA-00900エラーの原因ではありません。 –

0

あなたの質問は何をしようとするとと全く不明であるべきです。しかし、私の最善の解釈は、あなたがoracle merge文を探していることです。以下は、あなたが提供した小さな情報に基づいて行った前提に基づいた例です。あなたはおそらくMERGEステートメントを探しています。これにより、条件に基づいて更新または挿入できる1回の操作を実行できます。

また、日付を使用しているように見えますが、数値形式です。私はテーブル定義の欠如のためにこれに対処するために何もしなかった。あなたはまだそれに問題があるかもしれません。

MERGE 
INTO merc_adm_version TARGET -- The table you want to update/insert into 
USING (SELECT 20150409 as ver_valeur, 'MEAD' as ver_cle FROM dual) SOURCE -- The source of the data 
ON (TARGET.ver_cle = SOURCE.ver_cle) -- How to try and match records between source and target 
WHEN MATCHED THEN UPDATE SET ver_valeur = 20150409 -- When there is a match, how to update 
WHEN NOT MATCHED THEN INSERT (ver_cle, ver_valeur) -- When there is not a match, how to insert 
         VALUES ('MEAD', 20150409);