我有一个存储过程正在执行以下操作。
针对匹配的几个类似的源表(基于名称和地址数据)检查填充的目标表数据。如果在第一个表中找到匹配,则它使用标记来更新目标,该标志标识匹配来自哪个源表。但是,如果它没有找到匹配项,我需要它查看下一个源表和下一个源表,直到找到匹配项或不符合具体情况。
是否有一种简单的方法可以让UPDATE语句提供某种返回值,我可以查询它是否更新了目标表?我想使用此返回值,以便我可以不必要地跳过检查后续源表。
否则我将不得不执行条件UPDATE,然后执行单独的查询以确定UPDATE是否实际更新了标志?
答案 0 :(得分:2)
答案 1 :(得分:0)
我喜欢戈登的洗礼,但我认为你不需要它。
只需按顺序运行更新:
UPDATE BASE_TABLE
SET FLAG='first_table'
where FLAG IS null AND
EXIST (SELECT 1 FROM first_table f1 where f1.ID = ID)
UPDATE BASE_TABLE
SET FLAG='second_table'
where FLAG IS null AND
EXIST (SELECT 1 FROM second_table f2 where f2.ID = ID)
... 等等。 你不需要检查每一行条件,这将非常慢。
答案 2 :(得分:0)
您可以将更新放入try / catch并将结果插入另一个表