二次开发中附件的使用实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oralce ERP二次开发中附件的使用实例

Oracle ERP二次开发中使用的方式有两种,一是通过标准功能,在系统管理员中定义即可,不用写代码,就可以使几乎任何Form具有附件功能,具体参考系统管理员文档,或者

[u][color=#0000ff][url=/viewthread.php?tid=36637]/vi ewthread.php?tid=36637[/url][/color][/u]

二是通过PL/SQL Gateway,需要我们便写代码完成。该方式其实和上述方式一的后台实现是一样的。我写了个Package,大体可以演示改写的代码。简单说明如下:

1、Package功能,测试通过PL/SQL Gateway(MOD PL/SQL)完成文件上传下载

2、本Package直接使用EBS的DAD,所以对应的Document表为APPS.fnd_lobs_document

在非EBS环境开发,需要自己定义DAD请参考9ias_plsql.pdf和9ias.pdf,步骤如下

a、创建Document表,参照fnd_lobs_document和fnd_lobs_documentpart,表名自己起

b、配置DAD,配置文件为$IAS_ORACLE_HOME/Apache/modplsql/cfg/wdbsvr.app

c、参照fnd_gfm,改写成自己的包,或者简单点改写本Package也行

3、需要把我们写的包在system administrator --> security --> Web PL/SQL里面注册一下,

不然通过IE打开会提示用户名和密码

4、本测试把在“接口”fnd_lobs_document中的附件,按照EBS的做法保存到fnd_lobs,

也可以改写代码保存到自己的表,一般没必要,我们自己的表保存File_ID即可

5、一个表中的BLOB等数据可以直接插入另一个表

[code]

CREATE OR REPLACE PACKAGE oracle_up_down AUTHID CURRENT_USER IS

/********************************************

1、Package功能,测试通过PL/SQL Gateway(MOD PL/SQL)完成文件上传下载

2、本Package直接使用EBS的DAD,所以对应的Document表为APPS.fnd_lobs_document

在非EBS环境开发,需要自己定义DAD请参考9ias_plsql.pdf和9ias.pdf,步骤如下

1、创建Document表,参照fnd_lobs_document和fnd_lobs_documentpart,表名自己起

2、配置DAD,配置文件为$IAS_ORACLE_HOME/Apache/modplsql/cfg/wdbsvr.app

3、参照fnd_gfm,改写成自己的包,或者简单点改写本Package也行

3、需要把我们写的包在system administrator --> security --> Web PL/SQL里面注册一下,

不然通过IE打开会提示用户名和密码

4、本测试把在“接口”fnd_lobs_document中的附件,按照EBS的做法保存到fnd_lobs,

也可以改写代码保存到自己的表,一般没必要,我们自己的表保存File_ID即可

5、一个表中的BLOB等数据可以直接插入另一个表

********************************************/

/***************上传文件下载过程*************

1、初始化access id

select fnd_gfm.authorize(-1) from dual;

2、准备url,下面是例子

SELECT fnd_web_config.trail_slash(fnd_profile.VALUE('APPS_WEB_AGENT')) ||

'oracle_up_down.upload_form?p_access_id=上面1的查询结果'

FROM dual;

3、用浏览器打开url即可。如果是通过Form打开url上传,那么把上面代码放入form的相应trigger

4、查看File_ID

SELECT fnd_web_config.trail_slash(fnd_profile.VALUE('APPS_WEB_AGENT')) ||

'oracle_up_down.upload_form?p_access_id=上面1的查询结果'

FROM dual;

4、把文件下载下来验证

SELECT fnd_web_config.trail_slash(fnd_profile.VALUE('APPS_WEB_AGENT')) ||

'oracle_up_down.download_file?p_file_id=上面4的查询结果' || chr(38) ||

'p_access_id=上面1的查询结果'

FROM dual;

5、可以直接在PL/SQL Developer 6以上中Select出来点击File_Data察看

Test脚本

:8003/pls/scp/fnd_web.SHOWENV;

select fnd_gfm.authorize(-1) from dual;

select * from applsys.fnd_lob_access t where t.access_id = 354896931892;

:8003/pls/SCP/oracle_up_down.upload_form?p_access_id=354896931892; select * from applsys.fnd_lob_access t where t.access_id = 354896931892;

select * from applsys.fnd_lobs_document t;

:8003/pls/SCP/oracle_up_down.download_file?p_file_id=3548970&p_acce ss_id=354896931892;

Select * from fnd_lobs flb where flb.file_id = 3548970;

****************上传文件下载过程*****************/

g_agent CONSTANT VARCHAR2(100) := fnd_web_config.trail_slash(fnd_profile.VALUE('APPS_WEB_AGENT'));

g_package_name CONSTANT VARCHAR2(100) := 'oracle_up_down';

g_upload_url CONSTANT VARCHAR2(100) := g_package_name || '.upload_file';

g_download_url CONSTANT VARCHAR2(100) := g_package_name ||

'.download_file';

g_cancel_url CONSTANT VARCHAR2(100) := g_package_name || '.cancel_file';

--完成上传:把在网关中的数据抓到自己的表

PROCEDURE upload_file(p_file_name IN VARCHAR2, p_access_id IN NUMBER);

--显示HTML取消页面

PROCEDURE upload_cancel;

--显示HTML上传页面

PROCEDURE upload_form(p_access_id IN NUMBER DEFAULT NULL);

--下载文件

PROCEDURE download_file(p_file_id IN NUMBER,

相关文档
最新文档