
Oracle学习笔记
文章平均质量分 53
写代码也要符合基本法
在编译的时候我保留了一部分代码,这样别人才能知道我写的是Bug
展开
-
Oracle Form - App_Query的简单使用
id_column、name_column都是外键表的字段名称,前者是子查询SELECT的字段,后者则在子查询的WHERE条件里匹配由non_db_field其值生成的查询条件。non_db_field则是数据块的非数据库项目,它的值(即NAME_IN(block_name.non_db_field))用于生成子查询里的查询条件。此时FND_LOOKUP_TYPES.APPLICATION_NAME里的值是 %应付%需要注意的是db_field是被查询块block_name的表(数据源)的。原创 2024-12-03 16:05:44 · 561 阅读 · 0 评论 -
EBS API - 删除说明性弹性域
【代码】EBS API - 删除说明性弹性域。原创 2024-11-15 16:04:53 · 131 阅读 · 0 评论 -
Oracle SQL - 合并重叠的期间
有如下数据存储了各组件的有效期间(此处起止日期用数字代替以便查阅),目标为将有重叠的期间合并到一起原创 2024-08-20 17:42:40 · 829 阅读 · 0 评论 -
Oracle SQL - CONNECT BY语句Where条件中不能使用OR?[已解决]
难道递归查询中不可以使用OR来关联表吗?究其原因,在递归查询的Where条件中,最先执行的是表关联条件,必须是同时出现两个表的表达式原创 2024-06-27 17:30:49 · 429 阅读 · 0 评论 -
Oracle SQL - HAVING和分析函数的执行顺序
分析函数是基于最终的结果集进行开窗的,所以HAVING比分析函数先执行原创 2024-04-18 14:08:20 · 413 阅读 · 0 评论 -
PLSQL - 一个IR/DR权限程序包套娃带来的问题
CUX受到赋权,可以调用IRDRIR包(main),但从打印的结果来看,在IRDRIR包中,竟然以CUX的身份成功调用了DRIR包,进而切换到了APPS上下文,最终转到了IR包,没有发生任何报错原创 2023-08-24 14:42:00 · 298 阅读 · 0 评论 -
PLSQL - Months_Between的理解和使用
总结一下可以归纳出以下几点:原创 2023-06-07 16:46:55 · 2674 阅读 · 0 评论 -
EBS XML - XML报表的模板文件存在哪里?
文件以blob格式存储在表xdo.xdo_lobs,字段file_data。原创 2023-06-01 15:04:26 · 398 阅读 · 0 评论 -
PLSQL - FORALL+MERGE的使用(11g)
另外值得一提的是,11g取消了FORALL使用UPDATE语句时,SET部分不能引用数组索引的限制。,Oracle 11g引入FORALL结合MERGE语句的使用方法。原创 2023-05-09 11:27:20 · 255 阅读 · 0 评论 -
WebADI - 组件和LOV列的对应关系
WebADI - 组件和LOV列的对应关系。原创 2023-04-06 17:22:38 · 457 阅读 · 0 评论 -
WebADI - 参数的使用
可以理解为Definition是实际的参数,但它是独立的,也是可供共享的,最终它将使用在哪个WEBADI的下载页面,这要看谁的参数列表里引用了它。在定义集成器的上传模板时,系统实际上也会创建一个对应的参数列表,代码一般为XXX_UPL,所以下载的参数列表建议保持一致,命名为XXX_DPL,本例取名为BHSC_EMP_ADI_DPL。开发过程中我发现,尽管参数定义为非必需的,但对于值列表的情况,页面上总会默认选择第一个值,且列表中并没有空白选项,也不能删除参数的值,这将导致非必需参数也变成了必需的。原创 2023-02-17 16:23:12 · 810 阅读 · 0 评论 -
PLSQL - 利用Object Type实现Greatest/Least忽略空值计算
在使用的时候,对象被实例化出来的同时,其greatest和least属性便已计算好,并可在游标中直接引用了。的文章,最近又想到可以用对象类型来实现,不算成熟,抛砖引玉。原创 2023-02-15 17:36:27 · 354 阅读 · 0 评论 -
Oracle Form - 日历组件点不开(已解决)
又在检查调用calendar_rest_all的代码中发现APPDAYPK/calendar_show中有如下代码(calendar_show是calendar.show调用的过程)点击该字段值列表,没有弹出日历时,通过诊断/检查看到global.frd_debug内容为Entering calendar.calendar_reset_all。有某表单界面,在新建记录时,其中一个日期字段点击值列表不能弹出日历,且会叮咚响,但是左下角没有任何错误信息显示;如果在这个字段输入点什么内容,就能点开日历。原创 2023-01-13 12:29:53 · 239 阅读 · 0 评论 -
Oracle Kill Session 方法详细说明(转)
与要求会话自行终止的KILL SESSION命令不同,DISCONNECT SESSION命令会终止专用服务器进程(或使用共享服务器时的虚拟电路),这相当于从操作系统中终止服务器进程。Oracle 数据库中经常会出现session阻塞等导致CPU使用率异常的情况,而一个快速解决这个故障的方法就是kill session,可以直接kill 所有session,也可以使用hanganalyze 工具找到具体的session 在kill。如果省略SQL_ID,则假定指的是当前在指定会话中运行的SQL。转载 2022-12-31 16:02:29 · 6628 阅读 · 0 评论 -
EBS - FA资产剩余寿命计算脚本
参考自表单FAXASSET/Program Unit:INQUIRY_BOOKS.post_query。2、直接查资产在当前的剩余寿命。1、指定截止到某个期间。原创 2022-12-28 16:36:30 · 416 阅读 · 0 评论 -
Oracle Form - 文件夹数据块点击排序后只剩一行显示(已解决)
另外,我又在app_folder.event('PRE-BLOCK')中发现,它调用的app_folder_get_instance_values过程,会用system.trigger_name去匹配出folder_master_props.pending_where_clause的内容存放至app_folder.pending_where_clause。2、在app_folder.event('POST-QUERY')中,会判断当它是FALSE时,执行app_folder_ext_whr_cls。原创 2022-10-05 02:58:47 · 1038 阅读 · 0 评论 -
PLSQL - 递归子查询RSF打破CONNECT BY LOOP限制
简单来说,这是一个未指示父子关系的放飞自我的递归,它只对LEVEL进行了一下筛选首先YUSUF是第一层,然后全表作为他的下一层(LEVEL=2),进行到这里要求RNAME的+号数量≥1,从而QINJINGBAO(角色是SON)被淘汰;下面第二层的各行分别来到第三层,依然是全表作为遴选对象,这里要求RNAME的+号数量≥2,唯有TURNER可以入选;这是一种很聪明的存储方法,但有时我们却又可能需要拆出每个人的所有角色以便匹配,也就是说要以员工+单角色名称的维度来组织数据,如下图。...原创 2022-07-15 22:41:38 · 538 阅读 · 0 评论 -
PLSQL - 自定义函数实现Greatest/Least忽略空值计算
说明Greatest和Least是Oracle的两个内置函数,可以从一众值中计算出最大或最小值,非常方便。但是它们有一个使用起来不太方便的地方:只要列表中含有一个NULL,计算结果就是NULL了。如果要比较的值比较少,尚可做一些加工来避免NULL值的影响,比如greatest(coalesce(col1, col2, col3), coalesce(col2, col3, col1), coalesce(col3, col1, col2))但如果是值很多的原创 2022-02-17 17:08:17 · 2072 阅读 · 0 评论 -
PLSQL - 一例阿拉伯数字转中文大写程序
程序create or replace function cux_num2chn(p_number number, p_round number := null) return varchar2 is /* Description: Convert a number into Chinese string. The number should between 1e21 and -1e2原创 2022-02-16 08:46:39 · 683 阅读 · 0 评论 -
Oracle Form - 另一种全选/全不选功能设计
功能设计开发步骤列表中的复选框:数据块中增加ITEM,子类信息CHECKBOX,选中时值Y,未选中值N(本例中为DETAILS.SELECTED) 全选/全不选框:一个非数据库项,子类信息CHECKBOX,选中时值Y,未选中值N(本例中为CONTROL.SELECT_ALL) 列表数据块增加块级的用户命名触发器SELECT_ALL :DETAILS.SELECTED := :CONTROL.SELECT_ALL; CONTROL.SELECT_ALL触发器WHEN-CHECKBOX-.原创 2022-01-17 15:41:23 · 568 阅读 · 0 评论 -
Oracle Form - 一种全选/全不选功能设计
功能设计设计思路全选/全不选框要实现的是:1、自己被勾选,就将列表全部勾选;2、自己被取消,就将列表全部取消列表单选框要实现的是:自己被取消,互动取消全选框开发实现列表中的复选框:数据块中增加ITEM,子类信息CHECKBOX,选中时值Y,未选中值N(本例中为DETAILS.SELECTED) 全选/全不选框:一个非数据库项,子类信息CHECKBOX,选中时值Y,未选中值N(本例中为CONTROL.SELECT_ALL) 增加一个参数ALL_SELECTED,初始值...原创 2022-01-15 18:55:22 · 923 阅读 · 0 评论 -
PLSQL - 一次聚合函数翻车的教训
最近在项目上竟然因为聚合函数翻了车,引人深思,发人深省。事故再现在程序包中一个地方需要从某表中求一个数量的和,实际开发过程是把写好的 DEMO 粘贴进来,加了 WHERE 条件,但是懒得删去 GROUP BY,就像下面这样SELECT SUM(t.quantity) INTO l_quantity_s FROM demo_t t WHERE t.item_id = p_item_id GROUP BY t.item_id结果就是在实际运行中报了错误 ORA-01403: 未找到任原创 2022-01-06 10:26:14 · 777 阅读 · 2 评论 -
PLSQL - 日期操纵函数模板IW/WW/W之区别
日期处理函数pattern中IW、WW、W这三个元素都能表示周,但是他们有着具体的区别:IW是以ISO 8601标准规定的周制,每个日历星期从星期一开始,星期日为第7天。以1月4日所在周为当年第一周WW是全年计数的周,以1月1日至7日为当年第一周,此后每七天记为一周W是全月计数的周,以1日至7日为当月第一周,此后每七天记为一周例1:今年1月4日是恰是周一,故以ISO 8601标准,1月前三天划归上年第53周;不过这只体现在周数上,当使用trunc函数截断至周时,则仍以日历周的起止规则行.原创 2021-11-05 20:53:37 · 3538 阅读 · 0 评论 -
PLSQL - 理解聚合函数的分析模式
聚合函数是我们所熟知的非常好用的数据统计函数,例如求和、求取最值等。我们已经知道聚合计算是基于数据分组使用的,简单来说数据分组就是考察表中行的若干特征,特征一致的行分到一个组中。另外从数据分组的原理我们又发现,分组后的数据仅保留了被考察的特征列(如果有的话)以及被聚合的列,如此求取聚合值后,返回结果的行数就可能少于原始数据集的行数。分析函数又称窗口函数,但实际上分析函数一般含有三个要素:分区子句、排序子句和窗口子句。这里的分区和分组的概念十分相像,同样是将若干特征一致的行分到一个分区中。但与 GROUP原创 2021-05-27 18:28:14 · 752 阅读 · 0 评论 -
PLSQL - 一次外连接翻车的教训
近期写视图时用外连接翻了车,正好还原了曾经犯过的但没有及时记录的错误,现总结本文。原创 2021-03-30 18:01:18 · 337 阅读 · 0 评论 -
PLSQL - 一次关于SYS_CONTEXT函数、IR函数与视图的尝试
最近在学习有关AUTHID的内容时,发现Oracle多份官方文档中强调的一项比较有趣的规定Oracle Database PL/SQL Language Reference 11g Release 2, P8-49Oracle Database SQL Language Reference 11g Release 2, P5-282这个规定的中心思想就是:1)如果在视图中调用了IR权限的存储过程,上下文CURRENT_USER总是视图的定义者,而非调用者;2)如果视图中直接调用了..原创 2020-10-16 16:42:20 · 275 阅读 · 0 评论 -
EBS - API创建客户联系人、联系方式和联系人职责
关于联系人和联系方式表结构的介绍,请参阅联系人数据结构和联系方式数据结构一、创建联系人DECLARE x_person_party_id NUMBER; x_person_party_number NUMBER; x_org_contact_id NUMBER; x_party_rel_id NUMB...原创 2020-04-28 15:53:50 · 2531 阅读 · 1 评论 -
EBS - API创建客户、地点和业务目的
一、创建客户(组织+账户)DECLARE x_cust_account_id NUMBER; x_account_number NUMBER; x_party_id NUMBER; x_party_number NUMBER; x_profile_id NUMBER; x_return_status VARCHAR2(5); x...原创 2020-04-26 12:34:24 · 1861 阅读 · 0 评论 -
Oracle AR - 客户联系方式表结构简述
EBS中为客户创建的联系方式均存储在HZ_CONTACT_POINTS表中,该表以OWNER_TABLE_NAME区分联系方式是属于地点层的还是联系人层的:联系方式层次 OWNER_TABLE_NAME OWNER_TABLE_ID 联系人层 'HZ_PARTIES' 关联联系人与客户账户关系(PARTY_RELATIONSHIP)在HZ_PARTIES的PARTY...原创 2020-04-25 17:38:01 · 1771 阅读 · 0 评论 -
Oracle AR - 客户与联系人表关系AR_CONTACTS_V
(作图丑陋 请多包涵)EBS中在客户的账户层和地点层均可创建联系人,地点层上的联系人在HZ_CUST_ACCOUNT_ROLES表中对应记录的CUST_ACCOUNT_ID和CUST_ACCT_SITE_ID分别存储客户的账户ID和所属的客户地点ID,账户层上的联系人对应记录则CUST_ACCT_SITE_ID字段为空。一个联系人可以关系到HZ_RELATIONSHIPS表中的一对记...原创 2020-04-25 16:36:13 · 3945 阅读 · 0 评论 -
PLSQL - 不创建自定义函数计算10的阶乘
法1:CONNECT BY结合使用DBMS_AW.EVAL_NUMBERSELECT dbms_aw.eval_number(substr(sys_connect_by_path(LEVEL, '*'), 2)) f FROM dual WHERE connect_by_isleaf = 1CONNECT BY LEVEL <= 10;法2:利用对数运算法则(积的对数等于对...原创 2020-03-20 15:58:57 · 1036 阅读 · 0 评论 -
PLSQL - 递归查询 Hierarchical Query
如果一张表中的数据行与行之间存在层级关系(hierarchical data),我们则可以使用递归查询语法来展现这种层级关系。一、语法START WITH子句用以在查询中指定开始检索的根节点(可以是多行);CONNECT BY子句用以指示层级关系的内在关联。如轨道图所示,START WITH子句和CONNECT BY子句孰前孰后都是可以的。递归条件(CONNECT BY c...原创 2020-03-20 01:00:06 · 1876 阅读 · 0 评论 -
EBS - API注册表单和功能
一、注册表单 FORMDECLARE l_formid NUMBER;BEGIN l_formid := fnd_form_s.nextval; fnd_form_pkg.insert_row(x_rowid => l_rowid ,x_application_id =&g...原创 2020-02-16 19:37:27 · 345 阅读 · 0 评论 -
EBS - API注册可执行和并发程序
一、注册可执行 EXECUTABLEDECLARE l_rowid ROWID; l_exeid NUMBER;BEGIN l_exeid := fnd_executables_s.nextval; fnd_executables_pkg.insert_row(x_rowid => l_rowid ...原创 2020-02-15 23:13:41 · 1665 阅读 · 1 评论 -
PLSQL - 利用自治事务实现按月生成流水序号示例
在序列号的实际应用场景中,常会出现按照某种条件从头开始计算序号的需要,如按年月生成流水号,2019年10月的第一个流水号为19100001,而11月的第一个流水号则为19110001。这种情况下单纯使用序列SEQUENCE则无法实现,而如果每次生成序号时从表中选取最大值又容易造成重复序号。本例采用自治事务与序列相结合的方式,实现按年月生成“YYMM+四位流水”格式的序列号,流水号要求每月重新计算。...原创 2019-10-22 01:16:36 · 554 阅读 · 0 评论 -
PLSQL中使用Java源对象获取随机数示例
Oracle8i数据库的一个重要特点是在数据库引擎中包含了JVM。该功能使得用户可以在数据库中以与PLSQL代码平等的地位运行Java代码。Java的简单性和可移植性不仅使Oracle可以很好的工作在网络上,而且也大大扩展了PLSQL语言的能力。例如,在较早版本的Oracle的标准内置包中,还没有提供DBMS_RANDOM包。我们可以借助于Java,以简便的方法获得随机数:首先,创建一个J...原创 2018-10-12 16:59:18 · 491 阅读 · 0 评论 -
正则表达式在PLSQL中的使用(附正则表达式语法)
PLSQL中与正则表达式相关的运算函数主要有以下四个: REGEXP_LIKE:返回指定字符串是否符合给定的正则表达式; REGEXP_SUBSTR:返回在指定字符串中截取出的符合给定正则表达式的子串; REGEXP_INSTR:返回在指定字符串中符合给定正则表达式的子串的开始位置; REGEXP_REPLACE:返回将指定字符串中符合给定正则表达式的子串替换为...原创 2018-10-08 14:48:11 · 10644 阅读 · 0 评论 -
PLSQL程序包中的PRAGMA SERIALLY_REUSABLE
PRAGMA SERIALLY_REUABLE是PACKAGE一个可选项,决定所创建的包是否可以连续调用。如果省略,则包的运行状态被放在用户全局区;如果使用,则包的运行状态被放在系统全局区,这样每次调用之后,该包的运行状态就会被释放:可以连续被调用,而不受以前的运行状态的影响。例如:CREATE OR REPLACE PACKAGE test_sr_yes_pkg IS PRAGMA...原创 2018-09-29 15:01:50 · 762 阅读 · 0 评论 -
PLSQL - BULK COLLECT在数据批量处理中的使用
与循环遍历不同,使用BULK COLLECT子句可以批量检索结果,即一次性将结果集绑定到一个表变量中,并从SQL引擎发送到PLSQL引擎,大大减少循环处理的成本。需要注意的是,BULK COLLECT必须将结果集绑定到表类型的变量中。通常可以在SELECT INTO、FETCH INTO以及RETURNING INTO子句中使用BULK COLLECT。一、SELECT BULK COLLEC...原创 2018-10-31 17:27:34 · 1393 阅读 · 0 评论 -
PLSQL - 针对汉字的特别ORDER方式
一、按部首排序例SELECT f.full_name FROM per_all_people_f f WHERE f.effective_start_date <= SYSDATE AND nvl(f.effective_end_date, SYSDATE) >= SYSDATE ORDER BY nlssort(f.full_name, 'NLS_SORT=SCH...原创 2018-10-31 17:43:25 · 768 阅读 · 0 评论