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触发器中。

相关推荐
石头wang1 天前
oracle jdbc 依赖以及对dbeaver的性能影响,如何选择oracle驱动, oracle jdbc 驱动
数据库·oracle
-XWB-1 天前
【Oracle】Oracle诊断系列(2/6):锁问题与阻塞分析——解决“卡住”的会话
数据库·oracle
cqsztech1 天前
Oracle 26ai 2节点RAC 保姆级搭建步骤
数据库·oracle
知识分享小能手1 天前
Oracle 19c入门学习教程,从入门到精通,Oracle 的闪回技术 — 语法知识点与使用方法详解(19)
数据库·学习·oracle
-XWB-2 天前
【Oracle】Oracle诊断系列(4/6):表空间与对象管理——存储优化与空间规划
数据库·oracle
Apple_羊先森2 天前
ORACLE数据库巡检SQL脚本--7、检查不起作用的约束
数据库·sql·oracle
-XWB-2 天前
【Oracle】Oracle诊断系列(3/6):性能瓶颈定位——从SQL到I/O的全面分析
数据库·sql·oracle
猿小羽2 天前
Spring Boot 2 + Flyway 最佳实践:多数据库配置与迁移规范
spring boot·mysql·postgresql·oracle·flyway·sql server·数据库迁移
是桃萌萌鸭~2 天前
oracle 排查卡顿相关日志
数据库·oracle
Mr_Xuhhh2 天前
MySQL数据表操作全解析:从创建到管理
数据库·sql·oracle