如果在這種情況下使用MERGE INTO,則忽略。我只是想知道我是否可以檢查該行是否存在。如果不是,則將返回碼設置爲1並立即返回。如果是,則繼續執行其餘代碼並最終將返回碼設置爲0。下面的代碼不工作,因爲它總是執行到最後。我應該如何解決它?PL/SQL如何檢查是否存在並返回錯誤代碼
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個不同的返回碼。在這種情況下我應該怎麼做?
感謝。我用更復雜的案例更新了我的問題。這是我最初的目標。有沒有一種乾淨的方式來做到這一點? – Stan 2012-07-27 09:08:50
@Stan:在「飛行中」改變問題的範圍並不是很好。你應該從一開始就補充說。看我的編輯可能的解決方案。 – 2012-07-27 09:13:20