この場合、MERGEINTOを使用する方がよいかどうかは無視してください。行が存在するかどうかを確認できるかどうかだけです。そうでない場合は、戻りコードを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つの異なるリターンコードを持っています。この場合はどうすればよいですか?