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語句
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語句
在insert語句刪除從列單引號。
而不是
('VER_VALEUR', 'VER_CLE')
應該
(VER_VALEUR, VER_CLE)
你的問題是,什麼你正在嘗試做的還不是很清楚。但是,我最好的解釋是你正在尋找一個oracle合併聲明。下面是一個基於我對你所提供的信息做出的假設的例子。你很可能在尋找MERGE語句。這使您可以執行單個操作,可以根據您的條件更新或插入。
此外,您似乎使用日期,但數字格式。由於缺少任何表格定義,我沒有做任何處理。你可能仍然有問題。
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);
'IF'不是Oracle SQL的一部分;它是PL/SQL語法的一部分。也許你正在尋找「MERGE」聲明? –
你從哪裏獲得Oracle SQL?查找書籍或參考Oracle SQL語句。 –
試試這裏:https://livesql.oracle.com/apex/livesql/file/index.html –