2014-06-08 Created By BaoXinjian

一、总结


1. 上传资料

(1).通过调用function<FND_FNDFLUPL>,打开上传文件页面;

(2).从表fnd_lob_access和fnd_lobs中取出文件名放在form画面上;

2. 对dbms_lob中的二进制文件进行处理

(1).通过dbms_lob.converttoclob将二进制文件转换成字符文件;

(2).通过dbms_lob.instr和dbms_lob.substr在字符文件获取字符串记录;

3. 对获取资料放入到临时表,并显示在画面上

(1).通过instr和substr获字符串记录中的字段;

(2).并将字段赋值到集合或表中;

二、步骤


1. 上传资料

 1 DECLARE
 3     access_id NUMBER;
 5     l_server_url VARCHAR2(100);
 7     l_parameters VARCHAR2(100);
 9     button_choice INTEGER;
11     l_file_id VARCHAR2(100);
13     l_gfm_id INTEGER;
15 BEGIN
17     access_id := fnd_gfm.authorize(NULL);
19     fnd_profile.get('APPS_WEB_AGENT', l_server_url);
21     l_parameters := 'access_id=' || access_id || ' l_server_url=' || l_server_url;
23     fnd_function.EXECUTE(function_name => 'FND_FNDFLUPL',
25                          open_flag => 'Y',
27                          session_flag => 'Y',
29                          other_params => l_parameters);
31 -- Display a modal message for user to indicate file upload
33 -- is completed.
35     fnd_message.set_name('FND', 'ATCHMT-FILE-UPLOAD-COMPLETE');
37     button_choice := fnd_message.question(button1 => 'YES',
39                                           button2 => NULL,
41                                           button3 => 'NO',
43                                           default_btn => 1,
45                                           cancel_btn => 3,
46                                           icon => 'question');
48
49     IF (button_choice = 3) THEN
51         NULL;
53     ELSIF (button_choice = 1) THEN
55         l_file_id := '';
57         l_gfm_id := fnd_gfm.get_file_id(access_id);
59         :main.gfm_id := fnd_gfm.get_file_id(access_id);
61         IF l_gfm_id IS NOT NULL THEN
63             SELECT DECODE(INSTR(file_name, '/'),0,file_name,SUBSTR(file_name, INSTR(file_name, '/') + 1))
65                  INTO l_file_id
67                 FROM fnd_lobs
69               WHERE file_id = l_gfm_id;
71             IF l_file_id IS NOT NULL THEN
73                 :main.filename := l_file_id;
75                 SELECT cux_ce_stmt_s.NEXTVAL INTO :main.working_id FROM DUAL;
77             END IF;
79         END IF;
81     END IF;
83 END IF;

2. 对dbms_lob中的二进制文件进行处

 1 DECLARE
 3     c_data CLOB;
 5     l_data BLOB;
 7     l_dest_offset INTEGER := 1;
 9     l_scr_offset INTEGER := 1;
11     l_lang_context INTEGER := DBMS_LOB.default_lang_ctx;
13     l_warn INTEGER;
15     n_offset INTEGER;
17     n_clob_size INTEGER;
19     n_pos INTEGER;
21     v_buf VARCHAR2(4000);
23 BEGIN
25     DBMS_LOB.createtemporary(c_data, FALSE, DBMS_LOB.SESSION);
27     SELECT file_data INTO l_data FROM fnd_lobs WHERE file_id = 1501905;
29     DBMS_LOB.converttoclob(dest_lob => c_data,
31                            src_blob => l_data,
33                            amount => DBMS_LOB.lobmaxsize,
35                            dest_offset => l_dest_offset,
37                            src_offset => l_scr_offset,
39                            blob_csid => NLS_CHARSET_ID('UTF8'),
41                            lang_context => l_lang_context,
43                            warning => l_warn);
45     n_offset := 1;
47     LOOP
49         n_pos := DBMS_LOB.INSTR(lob_loc => c_data,
51                                 pattern => CHR(10),
53                                 offset => n_offset,
55                                 nth => 1);
57         IF NVL(n_pos, 0) = 0 THEN
59         n_pos := n_clob_size + 1;
61     END IF;
63     v_buf := DBMS_LOB.SUBSTR(lob_loc => c_data,
65                              amount => n_pos - n_offset,
67                              offset => n_offset);
69      n_offset := n_pos + 1;
71     EXIT WHEN n_pos > n_clob_size;
73 END LOOP;
75     IF dbms_lob.istemporary(l_data) > 0 THEN
77         dbms_lob.freetemporary(l_data);
79     END IF;
81     IF dbms_lob.istemporary(c_data) > 0 THEN
83         dbms_lob.freetemporary(c_data);
85     END IF;
87 END IF;

3. 对获取资料放入到临时表,并显示在画面上

 1 DECLARE
 3     v_buf VARCHAR2(1000);
 5     v_field VARCHAR2(1000);
 7     n_delimiter_pos INTEGER;
 9 BEGIN
11     v_buf := 'Return Authorization Reference,Adjustment Type,Vendor Number,Site Code- Pay To,Site Code- Ship To,Part Number,Quantity,Subinventory';
13     LOOP
15         v_field := NULL;
17         n_delimiter_pos := INSTR(v_buf, ',');
19         IF n_delimiter_pos > 0 THEN
21             v_field := LTRIM(RTRIM(SUBSTR(v_buf, 1, n_delimiter_pos - 1)));
23             v_buf := SUBSTR(v_buf, n_delimiter_pos + 1);
25         ELSIF LTRIM(RTRIM(v_buf)) IS NOT NULL THEN
27             v_field := LTRIM(RTRIM(v_buf));
29             v_buf := NULL;
31         END IF;
33         IF (v_buf IS NULL) THEN
35             EXIT;
37         END IF;
39     END LOOP;
41 END;

Thanks and Regards

转载于:https://www.cnblogs.com/eastsea/p/3776622.html

Form_通过FND_FNDFLUPL标准功能上传CSV控件(案例)相关推荐

  1. ASP.NET上传文件管理控件

    一.引言 v2完成了将数据绑定在dataGrid上的任务,但是dataGrid毕竟是asp.net 1.x的工具,在asp.net 2.0里面,使用是gridveiw.接下来的问题就是将datagri ...

  2. [系列文章]上传文件管理控件v2

    一.引言: 开发v1的时候,遇到很多困难(因为我是新手),于是就上网找了一些资料. 其中,这篇<数据绑定的总结 >文章(http://www.cnblogs.com/qingtianyzl ...

  3. java多文件上传plupload控件实现多图片上传(二)

    接上篇 java多文件上传plupload控件实现多图片上传(一) 续写PluploadUtil 和 Plupload PO类,以及后台的action. 至此,可实现多文件上传功能. 上传文件Acti ...

  4. [共享]一个文件上传的控件,绝对是精品源码

    [共享]一个文件上传的控件,绝对是精品源码 前段时候在www.codeproject.com上看到一个文件上传的控件,觉得很好,共享给园子里的朋友. 原文链接:http://www.codeproje ...

  5. java 批量上传图片插件_java多文件上传plupload控件实现多图片上传(一)

    使用的是plupload-2.1.2 控件.网上资源挺多的,很好下载. plupload 官方地址 : http://www.plupload.com/ plupload 示例: http://www ...

  6. 基于jQuery的uploadify(flash上传文件)控件v1.6.2 bug修正

    最近在http://www.open-open.com/ajax/Upload.htm上找了好多借用flash来选择文件上传的控件,对基于jQuery的uploadify甚是喜欢.于是就拿来应用到项目 ...

  7. 大文件上传 NeatUpload 控件

    因为要做一个大文件上传的功能,所以搜索了下.找到一个控件NeatUpload 而且这个空间是开源的 官网为http://www.brettle.com/neatupload 于是到官网去下了控件.它里 ...

  8. 用JS怎么判断上传文件控件是否未选择文件

    页面代码: <form name="form1" action="uploadPosdetailFile.html" method="post& ...

  9. 【ASP.NET】第八课——GridView 控件的编辑功能优化,GridView控件中嵌套DropDownList控件

    知识点:掌握 GridView 的编辑.高亮显示的功能 .GridView控件中嵌套DropDownList控件获取数据源. [ASP.NET]第七课--数据绑定和 GridView 控件的使用 重点 ...

最新文章

  1. mybatis mapper xml文件的导入方式和查询方式
  2. Science Advances文章揭示长时记忆的神经动态表征机制
  3. (转)iOS 6的Rotation--详细版本
  4. C/C++头文件一览表
  5. 期货大赛项目|九,fileinput插件的应用
  6. [论文阅读][ICP变种] Generalized-ICP
  7. Java EE:更名实属无奈,未来路在何方?
  8. 精选 | 2018年5月R新包推荐
  9. SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
  10. Android 四大组件学习之Activity七
  11. Java, 基础(面试题)总结(分享-交流)
  12. 第十二课:树莓驱动SG90派舵机
  13. matlab实现隐函数求偏导数(impldiff函数)
  14. Python在气象与海洋中的实践技术应用
  15. 基于epoll,socket与protobuf的简单帧同步游戏服务器
  16. 云智慧全智能计算机,东方所推出INV3062T型云智慧采集系统
  17. java fx 重绘_JavaFX 2.2:如何强制重绘/更新ListView
  18. Robotium 介绍
  19. 圣思园官方论坛正式上线,众板块版主火热招募中,欢迎围观
  20. 电商数据仓库项目总结

热门文章

  1. mysql sql 事务写作_mysql中的事务
  2. pandas dataframe 表头_python_库_pandas
  3. bae index.php,【微信公众平台开发】之一:入门与BAE3.0下操作
  4. PAGER set to stdout_Python || 学习笔记(4):dictamp;amp;set
  5. 让人又爱又恨的Mysql多表查询
  6. 巩固好基础,才能学好Linux
  7. C语言从51单片机led数组,51单片机之C语言-4.2数组
  8. 【Java】LeetCode 20 有效的括号 (运用数据结构:栈 解题)
  9. 关于学习Python的一点学习总结(36->基本序列和映射协议)
  10. D. Colored Rectangles[思维dp]