2014-01-06 Created By BaoXinjian
一、摘要
Oracle EBS二次开发中,由于功能要求复杂的缘故和数据库设计的要求,基于表的Form开发并不多见,为了能够更好的利用Form的特性,
需要开发基于视图的表单,开发基于视图的表单和基于表的表单实质并没有区别,
只是基于视图的表单中需要开发人员来明确编写增、删、改、锁的程序逻辑,而基于表的表单自动帮助完成这些功能。
1. Oracle Form开发的两种模式
(1). 基于Database Table开发
(2). 基于Database View开发
2. 基于视图的Form需要引入4个块级别的触发器:
(1).ON-INSERT 编写插入数据的SQL语句或程序逻辑
(2).ON-UPDATE 编写更新数据的SQL语句或程序逻辑
(3).ON-DELETE 编写删除数据的SQL语句或程序逻辑
(4).ON-LOCK 编写锁定记录的程序逻辑
针对上面的增删改的常用功能,可以引用Hand技术的大侠们提供的PLSQL包生产代码 HAND_PLSQL_AUTOCREATE
二、HAND_PLSQL_AUTOCREATE
1. procedure - regist_table
2. procedure - form_view_iud
3. procedure - table_handle_pkg
三、案例
1. 打开包hand_plsql_autocreate
2. 视图:form_view_iud
3. 输入4个参数:
数据块的名称
数据库对应数据库视图对应的基表
据库表的所有者
数据库表的主键
4. 执行,查看运行结果:
到form中建包:包名:数据块名称+_PRIVATE
5. 添加块触发器:
on-insert : 数据块名称+_PRIVATE.insert_row
on-update : 数据块名称+_PRIVATE.update_row
on-lock : 数据块名称+_PRIVATE.lock_row
on-delete : 数据块名称+_PRIVATE.delete_row --若数据块不允许删除数据,则可以省略此触发器
6. 调用方式
7. 复制代码至Package中,建立增删改锁程序
CREATE OR REPLACE PACKAGE cux_order_headers_pkg AS
** PROCEDURE: insert_row()
PROCEDURE insert_row();
** PROCEDURE: lock_row()
PROCEDURE lock_row();
** PROCEDURE: update_row()
PROCEDURE update_row();
** PROCEDURE: delete_row()
PROCEDURE delete_row();
END;
8. 添加Form Trigger中调用insert/update/lock/delete procedurer
Thanks and Regards
转载:张礼军/黄建华大侠 - http://oracleseeker.com/2009/09/28/view_based_form_development_for_oracle_ebs/
转载:百度文库 - http://wenku.baidu.com/