忽略在这种情况下使用 MERGE INTO 是否更好。我只是想知道是否可以检查该行是否存在。如果不是,则将返回码设置为 1 并立即返回。如果是,则继续执行其余代码,最后将返回码设置为 0。下面的代码不起作用,因为它总是执行到最后。我应该如何解决它?
BEGIN
-- check
SELECT CASE
WHEN NOT EXISTS (SELECT 1 FROM s WHERE s.col1 = 1 AND s.col2 = 2)
THEN 1
END
INTO ret FROM dual;
-- update
UPDATE s
SET s.col3 = 3
WHERE s.col1 = 1 AND s.col2 = 2;
COMMIT;
SELECT 0 INTO ret FROM dual;
RETURN ret;
END foo;
如果我希望能够区分它s.col1 = 1
不存在或s.col2 = 2
不存在怎么办。并为它们提供 2 个不同的返回码。在这种情况下我该怎么办?