sql ORA-00900:无效的SQL语句

时间:2017-04-06 10:22:50

标签: sql oracle plsql

请帮助

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 个答案:

答案 0 :(得分:0)

从insert语句中的列中删除单引号。

而不是

 ('VER_VALEUR', 'VER_CLE')

应该是

(VER_VALEUR, VER_CLE)

答案 1 :(得分:0)

你的问题很清楚你要做什么。但是,我最好的解释是你正在寻找一个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);