暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 你将如何实现这个?基于国家代码返回名称格式

ASKTOM 2019-04-10
318

问题描述

情况是这样的。
系统在几个国家使用。用户登录,一次只能在一个国家/地区。
系统中有id,属于一个国家。

系统中有特定国家/地区的功能/过程。
例如,非常简单的一个: get_full_name
-在国家A,它返回first_name last_name
-在B国,它返回last_name first_name

还有其他的,复杂得多。

所以我的问题是如何实现这些国家特定的功能,以便它们可以在其他软件包中使用?没有动态代码和大量的IFs (如果国家 = A,返回这个,等等)。

专家解答

Without dynamic code and lots of IFs (if country = A, return this, etc.).

至少,您要返回的每个唯一格式都需要一个IF/CASE子句。

为了避免对每个国家都进行硬编码,我会:

-创建国家/地区的查找表
-在这个表上有一个格式代码列
-在CASE语句中使用此值/如果

例如:

select name_format_code
into   format_code
from   countries c
where  c.country_code = country_param;

case
  when format_code = 'FIRST_LAST'
  then formatted_name := first_name || ' ' || last_name;
  when format_code = 'LAST_FIRST'
  then formatted_name := last_name || ', ' || first_name;
end;
复制


这意味着您只需要在必须支持新格式的情况下更改功能。添加新国家或更改现有国家/地区的格式只是运行适当的插入/更新的问题。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论