我想評估一個CASE語句(這是從函數返回的值)的表達式,如果它不符合其中一個條件返回表達式值本身。Oracle CASE語句 - 返回表達式值?
例如:
CASE UPDATE_RECORDS_F(party_number)
WHEN 'ONE_RECORD_UPDATED' THEN RETURN 'OK';
WHEN 'MULTIPLE_RECORDS_UPDATED' THEN RETURN 'OK_MULTIPLE';
ELSE RETURN (expression value);
END CASE;
的「其他」情況下,需要時會拋出異常的。我可以將返回的函數值賦給一個字符串並進行評估,但我不知道錯誤消息可能會持續多長時間。我寧願動態處理字符串值,而不是創建一個可以超出的設置長度的變量。
有沒有辦法做到這一點?
你的問題包含自己的答案。在PL/SQL中保留值的方法是將其分配給一個變量。你說你關心返回值的長度;但是你將從你自己的功能中返回它。什麼是你的函數的返回類型?如果它是VARCHAR2,則使用VARCHAR2(32767)的最大長度作爲本地變量。 –
除了其他考慮事項 - 你寫的代碼可以簡化如下:'RETURN CASE UPDATE_RECORDS(...)WHEN ... THEN ... ..... END;'(警告:在這種情況下它是'END ',而不是'END CASE',因爲現在你正在使用CASE表達式)。最好有一個'RETURN'語句而不是三個。 – mathguy