Form_通过FND_FNDFLUPL标准功能上传CSV控件(案例)
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控件(案例)相关推荐
- ASP.NET上传文件管理控件
一.引言 v2完成了将数据绑定在dataGrid上的任务,但是dataGrid毕竟是asp.net 1.x的工具,在asp.net 2.0里面,使用是gridveiw.接下来的问题就是将datagri ...
- [系列文章]上传文件管理控件v2
一.引言: 开发v1的时候,遇到很多困难(因为我是新手),于是就上网找了一些资料. 其中,这篇<数据绑定的总结 >文章(http://www.cnblogs.com/qingtianyzl ...
- java多文件上传plupload控件实现多图片上传(二)
接上篇 java多文件上传plupload控件实现多图片上传(一) 续写PluploadUtil 和 Plupload PO类,以及后台的action. 至此,可实现多文件上传功能. 上传文件Acti ...
- [共享]一个文件上传的控件,绝对是精品源码
[共享]一个文件上传的控件,绝对是精品源码 前段时候在www.codeproject.com上看到一个文件上传的控件,觉得很好,共享给园子里的朋友. 原文链接:http://www.codeproje ...
- java 批量上传图片插件_java多文件上传plupload控件实现多图片上传(一)
使用的是plupload-2.1.2 控件.网上资源挺多的,很好下载. plupload 官方地址 : http://www.plupload.com/ plupload 示例: http://www ...
- 基于jQuery的uploadify(flash上传文件)控件v1.6.2 bug修正
最近在http://www.open-open.com/ajax/Upload.htm上找了好多借用flash来选择文件上传的控件,对基于jQuery的uploadify甚是喜欢.于是就拿来应用到项目 ...
- 大文件上传 NeatUpload 控件
因为要做一个大文件上传的功能,所以搜索了下.找到一个控件NeatUpload 而且这个空间是开源的 官网为http://www.brettle.com/neatupload 于是到官网去下了控件.它里 ...
- 用JS怎么判断上传文件控件是否未选择文件
页面代码: <form name="form1" action="uploadPosdetailFile.html" method="post& ...
- 【ASP.NET】第八课——GridView 控件的编辑功能优化,GridView控件中嵌套DropDownList控件
知识点:掌握 GridView 的编辑.高亮显示的功能 .GridView控件中嵌套DropDownList控件获取数据源. [ASP.NET]第七课--数据绑定和 GridView 控件的使用 重点 ...
最新文章
- mybatis mapper xml文件的导入方式和查询方式
- Science Advances文章揭示长时记忆的神经动态表征机制
- (转)iOS 6的Rotation--详细版本
- C/C++头文件一览表
- 期货大赛项目|九,fileinput插件的应用
- [论文阅读][ICP变种] Generalized-ICP
- Java EE:更名实属无奈,未来路在何方?
- 精选 | 2018年5月R新包推荐
- SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
- Android 四大组件学习之Activity七
- Java, 基础(面试题)总结(分享-交流)
- 第十二课:树莓驱动SG90派舵机
- matlab实现隐函数求偏导数(impldiff函数)
- Python在气象与海洋中的实践技术应用
- 基于epoll,socket与protobuf的简单帧同步游戏服务器
- 云智慧全智能计算机,东方所推出INV3062T型云智慧采集系统
- java fx 重绘_JavaFX 2.2:如何强制重绘/更新ListView
- Robotium 介绍
- 圣思园官方论坛正式上线,众板块版主火热招募中,欢迎围观
- 电商数据仓库项目总结
热门文章
- mysql sql 事务写作_mysql中的事务
- pandas dataframe 表头_python_库_pandas
- bae index.php,【微信公众平台开发】之一:入门与BAE3.0下操作
- PAGER set to stdout_Python || 学习笔记(4):dictamp;amp;set
- 让人又爱又恨的Mysql多表查询
- 巩固好基础,才能学好Linux
- C语言从51单片机led数组,51单片机之C语言-4.2数组
- 【Java】LeetCode 20 有效的括号 (运用数据结构:栈 解题)
- 关于学习Python的一点学习总结(36->基本序列和映射协议)
- D. Colored Rectangles[思维dp]