首页 数据库 mysql教程 OAF FlexField中数据库与页面的前后台数据类型转换

OAF FlexField中数据库与页面的前后台数据类型转换

Jun 07, 2016 pm 03:10 PM
后台 数据 数据库 类型

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 Oracle Application中有FlexField(弹性域)这个东西。在FlexField tables,数据存放于VARCHAR2类型的一列或多列中。不论是数字、日期、文本等,最终都会以VARCHAR2存放在table中。在OA Page中,这些

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  Oracle Application中有FlexField(弹性域)这个东西。在FlexField tables,数据存放于VARCHAR2类型的一列或多列中。不论是数字、日期、文本等,最终都会以VARCHAR2存放在table中。在OA Page中,这些VARCHAR2一般需要使用相对应的格式,比如日期、数字,以使用相应的验证机制,或者根据不同的地区转换成不同的格式。问题是,怎样在前后台中做数据类型转换呢?一个最简单的办法是使用OAF的FlexField Bean.但在一些情况下,使用FlexField Bean反而会不方便控制。甚或乎,明明跟随了OAF Developer Guide的方法,但总是用不了这个FlexField Bean.这时,只能手工地做这件事情了。

  数据类型转换的基本原理很简单:把读写分离,或者说把前后台不同方向的数据流分开处理。

  1. 传统情况

  所谓传统情况,或者一般情况,就是数据库的列名是有实际意义的、明确的。比如,列名是EFFECTIVE_DATE,EO、VO中的属性名也会使用EffectiveDate.

  我们会在VO中定义一个SQL语句。当进行操作时,OAF会把这个SQL语句封装,然后进行读写。比如:

  [sql]

  SELECT   ExampleEO.example_id AS EXAMPLE_ID

  , ExampleEO.effective_date AS EFFECTIVE_DATE

  , ExampleEO.employee_name AS EMPLOYEE_NAME

  FROM   ExampleEO

  WHERE  ExampleEO.example_id > 10

  当查询example_id = 100的记录,OAF会封装成这样子:

  [sql]

  SELECT *

  FROM   (SELECT   ExampleEO.example_id AS EXAMPLE_ID

  , ExampleEO.effective_date AS EFFECTIVE_DATE

  , ExampleEO.employee_name AS EMPLOYEE_NAME

  FROM   ExampleEO

  WHERE  ExampleEO.example_id > 10) QRSLT

  WHERE  QRSLT.EXAMPLE_ID = 100

  插入的时候也是类似的:

  [sql]

  UPDATE (SELECT   ExampleEO.example_id AS EXAMPLE_ID

  , ExampleEO.effective_date AS EFFECTIVE_DATE

  , ExampleEO.employee_name AS EMPLOYEE_NAME

  FROM   ExampleEO

  WHERE  ExampleEO.example_id > 10) QRSLT

  SET      QRSLT.EFFECTIVE_DATE = <effective_date>          -- OK

  , QRSLT.EMPLOYEE_NAME = <employee_name>            -- OK

  WHERE  QRSLT.EXAMPLE_ID = 100

  总的来说,是将VO中的SQL语句封装成表格,然后外面包裹相应的操作。

  2. FlexField的问题

  而在FlexField的情况,列名是没有实际意义,或者说不明确的。FlexField存放数据的列名一般是ORG_INFORMATION1、PER_INFORMATION5之类。在VO中,这些名字可能会被替换为实际的用途,比如说ORG_INFORMATION1可能是一个Effective Date,那么在VO中的属性就会被命名为EffectiveDate.这个的mapping是在VO properties中设置的。

  为了简化列名,本文把ORG_INFORMATION1、PER_ATTRIBUTE1等统称为information1.于是,在一个FlexField表格,VO的语句会是这个样子:

  [sql]

  SELECT   ExampleEO.example_id AS EXAMPLE_ID

  , ExampleEO.information1 AS EFFECTIVE_DATE

  , ExampleEO.information2 AS EMPLOYEE_NAME

  FROM   ExampleEO

  WHERE  ExampleEO.example_id > 10

  查询example_id = 100的记录,会生成以下的语句:

  [sql]

  SELECT *

  FROM   (SELECT   ExampleEO.example_id AS EXAMPLE_ID

  , ExampleEO.information1 AS EFFECTIVE_DATE       -- information1 is a VARCHAR2

  , ExampleEO.information2 AS EMPLOYEE_NAME

  FROM   ExampleEO

  WHERE  ExampleEO.example_id > 10) QRSLT

  WHERE  QRSLT.EXAMPLE_ID = 100

  查询语句本身没有问题。但是在OA Page中,显示日期的item所属的类型一般会设成DATE,而上面的SQL语句查询结果的类型是VARCHAR2.于是,VO与PG上的的属性类型不管如何设置,都会在页面上方报错。此乃问题一。

[1] [2] 

OAF FlexField中数据库与页面的前后台数据类型转换

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

超级智能体生命力觉醒!可自我更新的AI来了,妈妈再也不用担心数据瓶颈难题 超级智能体生命力觉醒!可自我更新的AI来了,妈妈再也不用担心数据瓶颈难题 Apr 29, 2024 pm 06:55 PM

超级智能体生命力觉醒!可自我更新的AI来了,妈妈再也不用担心数据瓶颈难题

iPhone上的蜂窝数据互联网速度慢:修复 iPhone上的蜂窝数据互联网速度慢:修复 May 03, 2024 pm 09:01 PM

iPhone上的蜂窝数据互联网速度慢:修复

美国空军高调展示首个AI战斗机!部长亲自试驾全程未干预,10万行代码试飞21次 美国空军高调展示首个AI战斗机!部长亲自试驾全程未干预,10万行代码试飞21次 May 07, 2024 pm 05:00 PM

美国空军高调展示首个AI战斗机!部长亲自试驾全程未干预,10万行代码试飞21次

特斯拉机器人进厂打工,马斯克:手的自由度今年将达到22个! 特斯拉机器人进厂打工,马斯克:手的自由度今年将达到22个! May 06, 2024 pm 04:13 PM

特斯拉机器人进厂打工,马斯克:手的自由度今年将达到22个!

2024 QS排名发布!计算机MIT霸榜,清华11,北大15 2024 QS排名发布!计算机MIT霸榜,清华11,北大15 Apr 18, 2024 pm 09:04 PM

2024 QS排名发布!计算机MIT霸榜,清华11,北大15

Open-Sora全面开源升级:支持16s视频生成和720p分辨率 Open-Sora全面开源升级:支持16s视频生成和720p分辨率 Apr 25, 2024 pm 02:55 PM

Open-Sora全面开源升级:支持16s视频生成和720p分辨率

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源 单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源 Apr 29, 2024 pm 04:55 PM

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

70B模型秒出1000token,代码重写超越GPT-4o,来自OpenAI投资的代码神器Cursor团队 70B模型秒出1000token,代码重写超越GPT-4o,来自OpenAI投资的代码神器Cursor团队 Jun 13, 2024 pm 03:47 PM

70B模型秒出1000token,代码重写超越GPT-4o,来自OpenAI投资的代码神器Cursor团队

See all articles