我需要在我的 UPDATE 陳述句 WHERE 子句中有一個 CASE 陳述句。但是,它給了我一個編譯錯誤:
UPDATE......
.
.
WHERE CASE
WHEN p_client_id = 0 THEN user_id = p_user_id
ELSE client_id = p_client_id
END;
680/50 PL/SQL: ORA-00905: missing keyword
我錯過了什么,還是這不是正確的語法?
uj5u.com熱心網友回復:
我建議你像這樣重寫它:
UPDATE......
.
.
WHERE ( p_client_id = 0 and user_id = p_user_id
OR p_client_id != 0 and client_id = p_client_id )
;
我的假設(基于原始問題)p_client_id是總是填充的。如果不是這種情況,那么您將需要修改此代碼以處理空值。
uj5u.com熱心網友回復:
一種選擇是使用DECODE()函式進行條件匹配,例如
WHERE DECODE(p_client_id,0,user_id,client_id)=DECODE(p_client_id,0,p_user_id,p_client_id)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/483085.html
