2017-02-13 57 views
3

我嘗試使用下面的腳本,它工作得細到更新我的數據庫的某些行:有條件更新使用HQL

update DOS 
set NAMEDOS=:name, 
AGEDOS=:age, 
WEIGHTDOS=:weight 
where CODEDOS=:code 

我的問題是下面,有時重量可以爲空或null,所以我必須設置其他屬性。

我試圖繼續這樣,但它似乎並不工作:

update DOS 
set NAMEDOS=:name, 
AGEDOS=:age, 
WEIGHTDOS= (case when weight is not null then :weight else :WEIGHTDOS end), 
where CODEDOS=:code 

你能不能幫我請。

+0

啥子是個例外,你得到什麼? –

回答

1

請嘗試關閉括號一點,我認爲這:WEIGHTDOS應該是沒有雙點作爲其直接列名不參數:

update DOS 
    set NAMEDOS=:name, 
    AGEDOS=:age, 
    WEIGHTDOS= case when (:weight is not null) then :weight 
        else WEIGHTDOS 
       end, 
    where CODEDOS=:code 
+0

當權重有一個值時,腳本轉好,但是當嘗試使用空值時,我得到 java.sql.SQLException:ORA-00932:不一致的數據類型:預期的BiNARYgot CHAR –

+0

WEIGHTDOS的列類型是什麼? –

+0

WEIGHTDOS列是:字符串 –