在UPDATE中缺少表达式

时间:2016-04-19 08:31:59

标签: java sql oracle prepared-statement

我需要编写几个UPDATE查询来解析.csv文件中的数据,但我不知道该表是如何工作的,我甚至无法直接访问数据库,我刚刚得到一个像这样的INSERT查询:

insert into lr_umbrales_valores (umcod_id, uvfec_dt, uvval_nm)
values ((select umcod_id from lr_umbrales
where lrcod_nm = (
    select lrcod_id from lr_lineas_referencia
    where me_metrica_nm = ?
    and fecha_baja_dt is null) 
and umtip_tx='S'), sysdate, ?)

所以我试试这个:

UPDATE LR_UMBRALES_VALORES SET UVVAL_NM = ? 
WHERE (
    SELECT UMCOD_ID FROM LR_UMBRALES 
    WHERE LRCOD_NM = (
        SELECT LRCOD_ID FROM LR_LINEAS_REFERENCIA 
        WHERE ME_METRICA_NM = ? 
        AND FECHA_BAJA_DT IS NULL
    ) 
    AND UMTIP_TX = 'S') 
AND UVFEC_DT = TO_DATE(?, 'DD/MM/YYYY HH24:MI:SS')");

这给了我一个“失踪的表达”#39;错误(ORA-00936)

这是我得到的桌子的唯一信息:

Table to Update 这是我需要更新的表(其UVVAL_NM

Table from whom i get some Data 从这一个开始,当UMCOD_ID与下一个表中的LRCOD_NM相同时,我得到LRCOD_ID

Table to checkLRCOD_ID与' ME_METRICA_NM'相同时,获取?参数

如何处理此问题的任何提示?毋庸置疑,我对SQL全新,所以这可能是一个非常明显的错误,但我无法做到。

1 个答案:

答案 0 :(得分:2)

这部分

WHERE (
SELECT UMCOD_ID FROM LR_UMBRALES 
WHERE LRCOD_NM = (
    SELECT LRCOD_ID FROM LR_LINEAS_REFERENCIA 
    WHERE ME_METRICA_NM = ? 
    AND FECHA_BAJA_DT IS NULL
) 
AND UMTIP_TX = 'S') 

导致错误。也许你想要像

这样的东西
WHERE UMCOD_ID = (
    SELECT UMCOD_ID FROM LR_UMBRALES 
    WHERE LRCOD_NM = (
        SELECT LRCOD_ID FROM LR_LINEAS_REFERENCIA 
        WHERE ME_METRICA_NM = ? 
        AND FECHA_BAJA_DT IS NULL
    ) 
    AND UMTIP_TX = 'S')