【发布时间】:2014-10-30 19:23:35
【问题描述】:
我想创建一个存储过程,它可以灵活地处理对表的多个列的更新,但可能会提供或不提供所有或部分值。
比如这样的:
UPDATE some_table
SET
IF(I_COLUMN_1 is not NULL) THEN
COLUMN_1 = I_COLUMN_1
END IF;
IF(I_COLUMN_2 is not NULL) THEN
COLUMN_2 = I_COLUMN_2
END IF;
WHERE
SOME_KEY = I_SOME_KEY;
显然不对,只是给你一些伪代码来描述我的想法。
我现在能想到的唯一方法是检查每个变量,并为感觉非常糟糕的每一列运行单独的更新语句。
【问题讨论】:
-
I_SOME_KEY将始终提供给程序,I_COLUMN_1, I_COLUMN_2,...的值是否可以提供? -
是的,这是正确的,当没有提供数据时,我显然不想用 null 更新列。
标签: sql oracle plsql sql-update conditional