问题描述
情况是这样的。
系统在几个国家使用。用户登录,一次只能在一个国家/地区。
系统中有id,属于一个国家。
系统中有特定国家/地区的功能/过程。
例如,非常简单的一个: get_full_name
-在国家A,它返回first_name last_name
-在B国,它返回last_name first_name
还有其他的,复杂得多。
所以我的问题是如何实现这些国家特定的功能,以便它们可以在其他软件包中使用?没有动态代码和大量的IFs (如果国家 = A,返回这个,等等)。
系统在几个国家使用。用户登录,一次只能在一个国家/地区。
系统中有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语句中使用此值/如果
例如:
这意味着您只需要在必须支持新格式的情况下更改功能。添加新国家或更改现有国家/地区的格式只是运行适当的插入/更新的问题。
至少,您要返回的每个唯一格式都需要一个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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
641次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
621次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
520次阅读
2025-04-20 10:07:02
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
519次阅读
2025-04-08 09:12:48
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
477次阅读
2025-04-22 00:20:37
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
455次阅读
2025-04-17 17:02:24
Oracle 19c RAC更换IP实战,运维必看!
szrsu
454次阅读
2025-04-08 23:57:08
一页概览:Oracle GoldenGate
甲骨文云技术
452次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
449次阅读
2025-04-22 00:13:51
火焰图--分析复杂SQL执行计划的利器
听见风的声音
396次阅读
2025-04-17 09:30:30