2017-04-04 90 views
0

我試圖執行下面的更新查詢更新WHERE子句不更新工作,但在選擇在甲骨文工作DB

update custom_field cfe set cfe.field_value =:valueId where cp_entity_id = :cId 

0行。

這並沒有更新任何行,但相同的where子句與選擇查詢工作的罰款,並返回1行

select * from custom_field where cp_entity_id = :cId 

另外,如果我硬編碼CID參數的值,那麼更新工作正常,但我執行它從Java程序,所以我不可能硬編碼值

另外cp_entity_id列是一個外鍵。

+0

您是否正在運行查詢和硬編碼的更新?您插入了該行的會話,並且沒有提交? Java會話將不會看到來自其他會話的未提交數據。 –

+0

No Row已經存在那裏我只是想更新 –

+0

所以你可以從Java中查詢它,無論是硬編碼還是綁定?如何使用綁定變量從IDE /客戶端更新它?顯示Java調用(設置變量等)的數據和代碼可能也有幫助。 –

回答

0

一個設置參數的方式解釋here.

PreparedStatement ps = conn.prepareStatement(
    "UPDATE Messages SET description = ?, author = ? WHERE id = ? AND seq_num = ?"); 

// set the preparedstatement parameters 
ps.setString(1,description); 
ps.setString(2,author); 
ps.setInt(3,id); 
ps.setInt(4,seqNum); 

// call executeUpdate to execute our sql update statement 
ps.executeUpdate(); 
ps.close(); 
1

試試這個,我面臨着類似的問題。 使用此 select primary_key from custom_field where cp_entity_id = :cId查詢找出主鍵,然後在更新查詢的where子句中使用該主鍵。

+0

謝謝! Vidhu。它的工作 –

+0

似乎像OraclesqlDevloper IDE的一些限制 –