2016-04-19 34 views
0

.csvファイルからデータを解析するためにUPDATEクエリを書く必要がありますが、テーブルの仕組みがわからず、データベースに直接アクセスすることさえできませんちょうどこのようなINSERTクエリを得た:UPDATEで式が見つからない

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')"); 

これは私に 'ミッシング式' エラー(ORA-00936)を与える

これは、私が得たテーブルに関する唯一の情報:

Table to Update これは私がこの1から(そのUVVAL_NM

Table from whom i get some Data を更新する必要がある。表LRCOD_NMは、次のテーブルからLRCOD_IDと同じであるとき、私はUMCOD_IDを取得します。

Table to check ME_METRICA_NMがこれをアプローチする方法で任意の先端

?」パラメータと同じであるときLRCOD_IDにするには?言うまでもなく、私はSQLで全く新しいので、これは非常に明白な間違いかもしれませんが、私は正しいことができません。

+0

削除 '")のようなものを望んでいた;?。 '端から – jarlh

+0

これは、JavaのprepareStatementの一部だ@jarlhそれはmissleadingれた場合、私は申し訳ありませんが、質問から、それを削除するのを忘れて – DS94

答えて

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') 
+0

ありがとうそれは解決しました!しかし、私は次回は避けることができるように、エラーの簡単な説明を求めてもいいですか?他の種類のクエリでその構文を覚えていて、うまくいきました。 – DS94

+0

'=(サブクエリは私は 'IN(sub-query'、ちょうどその場合)をします... – jarlh

+0

サブクエリの結果は値であり、あなたはそれを別の値と比較する必要があります。句など –

関連する問題