我想评估一个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