Plsql 我可以在UPDATE语句中使用DECODE吗?
我可以在集合左侧的UPDATE语句中使用DECODE吗 更新临时设置解码(更新变量,1,col1, 2,col2)=更新_值Plsql 我可以在UPDATE语句中使用DECODE吗?,plsql,Plsql,我可以在集合左侧的UPDATE语句中使用DECODE吗 更新临时设置解码(更新变量,1,col1, 2,col2)=更新_值 这给了我一个错误,因为eual符号被忽略了。不,你不能这样做。您可以在PL/SQL中执行此操作: IF update_var = 1 THEN UPDATE temp SET col1 = update_value; else UPDATE temp SET col2 = update_value; END IF; 或者您可以像这样使用动态SQL: l_
这给了我一个错误,因为eual符号被忽略了。不,你不能这样做。您可以在PL/SQL中执行此操作:
IF update_var = 1 THEN
UPDATE temp SET col1 = update_value;
else
UPDATE temp SET col2 = update_value;
END IF;
或者您可以像这样使用动态SQL:
l_sql := 'UPDATE temp SET col'||update_var||' = :v';
EXECUTE IMMEDIATE l_sql USING update_value;
不能在update语句中使用decode。 但是,您可以使用merge语句 基本上,您使用合并的select部分将col1和col2解码为update_值或已经存在的值
这对于您的需求来说可能过于冗长,使用if语句或executeimmediate的解决方案可能更适合您的问题 这个怎么样?如果update标志设置为1,则更新col1;如果设置为2,则更新col2
UPDATE temp
SET col1 = DECODE(update_var, 1, update_value, col1),
col2 = DECODE(update_var, 2, update_value, col2)
另外,作为奖励,它将处理更新变量设置为一个或两个以外的值的可能情况
UPDATE temp
SET col1 = DECODE(update_var, 1, update_value, col1),
col2 = DECODE(update_var, 2, update_value, col2)