我还在学习PL/SQL的一些区别,所以这可能是一个简单的问题,但是...开始吧。
我有一个光标,它可以抓取一堆具有多个字段的记录。然后,我在游标结果的循环中运行两个单独的SELECT语句,以获取一些距离并计算这些距离。这些都能完美地工作。
当我使用新值更新表时,我的问题是有四个特定的条件。
update work
set kilometers = calc_kilo,
kilo_test = test_kilo
where lc = rm.lc
AND ld = rm.ld
AND le = rm.le
AND lf = rm.lf
AND code = rm.code
AND lcode = rm.lcode
and user_id = username;我的问题是这很少更新,因为rm.lf和rm.le在数据库中有空值。我如何才能解决这个问题,并创建正确的更新。
发布于 2009-03-26 14:10:58
如果我没有理解错的话,您希望将lf与rm.lf进行匹配,包括当它们都为空时?如果这就是你想要的,那么这个就可以了:
...
AND (lf = rm.lf
OR (lf IS NULL AND rm.lf IS NULL)
)
... 它比较lf和rm.lf的值,如果两者都为null,则返回false,因此如果两者都为null,则OR条件返回true。
发布于 2009-03-26 17:52:31
我有一个光标,它可以抓取一堆有多个字段的记录。然后,我在游标结果的循环中运行两个单独的SELECT语句,以获取一些距离并计算这些距离。这些都能完美地工作。
当我使用新值更新表时,我的问题是有四个特定的条件。
我首先要考虑的不是使用游标来读取数据,然后进行计算,然后执行更新。在99%的情况下,只需运行一个步骤即可完成所有这些任务的更新会更快、更容易
发布于 2012-08-15 09:15:25
update work
set kilometers = calc_kilo,
kilo_test = test_kilo
where lc = rm.lc
AND ld = rm.ld
AND NVL(le,'x') = NVL(rm.le,'x')
AND NVL(lf,'x') = NVL(rm.lf,'x')
AND code = rm.code
AND lcode = rm.lcode
and user_id = username;https://stackoverflow.com/questions/685902
复制相似问题