Oracle Form - App_Query的简单使用

  • RESET(block_name)

将块的Where条件重置为块的默认查询条件

  • JOIN(clause1, clause2) RETURN VARCHAR2

返回clause1 AND clause2,当入参其一为空时,则只返回不为空的那个

  • APPEND(block_name, clause)

在块现有的Where条件上追加条件(AND关系),所以clause内容里不要带WHERE等关键字

  • QUERY_FOREIGN_KEY (block_name, db_field, non_db_field, table_name, id_column, name_column[, extra_where_clause])

我们常使用Copy函数将搜查内容置入被查询块的对应项目,但当这个项目是非数据库项目时此方法便不奏效了,此时可以增加使用App_Query.QUERY_FOREIGN_KEY函数来转化项目中的值为子查询检索。

需要注意的是db_field是被查询块block_name的表(数据源)的字段名,用于匹配子查询结果(IN运算);non_db_field则是数据块的非数据库项目,它的值(即NAME_IN(block_name.non_db_field))用于生成子查询里的查询条件。

table_name即外键表名,是子查询中被查询的对象;id_column、name_column都是外键表的字段名称,前者是子查询SELECT的字段,后者则在子查询的WHERE条件里匹配由non_db_field其值生成的查询条件。

可选参数extra_where_clause用于给子查询附加查询条件。

也就是说该函数能够给数据块追加一个如下的WHERE条件:

db_field IN (SELECT id_column

FROM table_name

WHERE name_column 匹配block_name.non_db_field的值

[AND extra_where_clause])

例如:

App_Query.QUERY_FOREIGN_KEY('FND_LOOKUP_TYPES', 'APPLICATION_ID', 'APPLICATION_NAME', 'FND_APPLICATION_VL', 'APPLICATION_ID', 'APPLICATION_NAME');

此时FND_LOOKUP_TYPES.APPLICATION_NAME里的值是 %应付%

则函数给数据块追加的WHERE条件是:

APPLICATION_ID in (select APPLICATION_ID from FND_APPLICATION_VL where APPLICATION_NAME LIKE :FND_LOOKUP_TYPES.APPLICATION_NAME)

  • FREE

释放记录组APP_WHERE中的内容,此函数可以用在POST-FORM触发器中。

相关推荐
全栈开发帅帅3 小时前
基于springboot+vue实现的创新创业学分管理系统 (源码+L文+ppt)4-111
spring boot·后端·oracle
莳花微语10 小时前
Oracle 11G DataGuard GAP 修复过程(通过主库scn增备恢复)
数据库·oracle
焱焱枫15 小时前
Oracle的缓存会话游标
数据库·缓存·oracle
leo_厉锵19 小时前
数据库DCL与DQL
数据库·sql·oracle
Mephisto.java1 天前
【大数据学习 | 面经】Spark 3.x 中的AQE(自适应查询执行)
大数据·oracle·spark·database
小小不董1 天前
Oracle DB的并发控制
linux·运维·服务器·数据库·oracle·dba
J.P.August1 天前
Oracle 12c Data Guard 环境中的 GAP 修复方法
数据库·oracle
betazhou1 天前
Oracle golden gate 数据库同步工具数据初始化技术
linux·运维·数据库·oracle
J.P.August1 天前
Oracle 11g Data Guard 环境中的 GAP 处理办法
数据库·oracle