我需要在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我是不是遗漏了什么,或者这不是正确的语法吗?
发布于 2022-05-30 12:20:26
我建议你这样改写它:
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总是被填充。如果不是这样,那么您将需要修改此代码来处理空值。
发布于 2022-05-30 13:25:20
一个选项是使用DECODE()函数进行有条件的匹配,例如
WHERE DECODE(p_client_id,0,user_id,client_id)=DECODE(p_client_id,0,p_user_id,p_client_id)https://stackoverflow.com/questions/72434078
复制相似问题