当前位置: 首页 > news >正文

Oracle APEX IR报表下载CSV文件的方法

目录

0. 准备工作

1. 下载--自定义SQL

2. 下载--检索结果

0. 准备工作

-- 建表
CREATE TABLE T_DL_EMP(EMPNO      NUMBER(4) NOT NULL    -- 雇员编号,由四个数字组成。, ENAME      VARCHAR2(10)          -- 雇员姓名,由10个字符组成。, JOB        VARCHAR2(9)           -- 雇员的职位,由9个字符组成。, MGR        NUMBER(4)             -- 雇员的经理编号,经理也是雇员之一。, HIREDATE   DATE                  -- 雇员的雇佣日期。, SAL        NUMBER(7, 2)          -- 雇员的基本工资,由5位整数和2位小数组成,共7位。, COMM       NUMBER(7, 2)          -- 雇员的奖金。, DEPTNO     NUMBER(2)             -- 雇员所在部门的编号。
);
-- 插入数据
INSERT INTO T_DL_EMP VALUES (7369, 'SMITH', 'CLERK', 7902,TO_DATE('1980-12-17', 'YYYY-MM-DD'), 800, NULL, 20);
INSERT INTO T_DL_EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698,TO_DATE('1981-02-20', 'YYYY-MM-DD'), 1600, 300, 30);
INSERT INTO T_DL_EMP VALUES (7521, 'WARD', 'SALESMAN', 7698,TO_DATE('1981-02-22', 'YYYY-MM-DD'), 1250, 500, 30);
INSERT INTO T_DL_EMP VALUES (7566, 'JONES', 'MANAGER', 7839,TO_DATE('1981-04-02', 'YYYY-MM-DD'), 2975, NULL, 20);
INSERT INTO T_DL_EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('1981-09-28', 'YYYY-MM-DD'), 1250, 1400, 30);
INSERT INTO T_DL_EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('1981-05-01', 'YYYY-MM-DD'), 2850, NULL, 30);
INSERT INTO T_DL_EMP VALUES (7782, 'CLARK', 'MANAGER', 7839,TO_DATE('1981-06-09', 'YYYY-MM-DD'), 2450, NULL, 10);
INSERT INTO T_DL_EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('1982-12-09', 'YYYY-MM-DD'), 3000, NULL, 20);
INSERT INTO T_DL_EMP VALUES (7839, 'KING', 'PRESIDENT', NULL,TO_DATE('1981-11-07', 'YYYY-MM-DD'), 5000, NULL, 10);
INSERT INTO T_DL_EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('1981-09-08', 'YYYY-MM-DD'), 1500, 0, 30);
INSERT INTO T_DL_EMP VALUES (7876, 'ADAMS', 'CLERK', 7788,TO_DATE('1983-01-12', 'YYYY-MM-DD'), 1100, NULL, 20);
INSERT INTO T_DL_EMP VALUES (7900, 'JAMES', 'CLERK', 7698,TO_DATE('1981-12-03', 'YYYY-MM-DD'), 950, NULL, 30);
INSERT INTO T_DL_EMP VALUES (7902, 'FORD', 'ANALYST', 7566,TO_DATE('1981-12-03', 'YYYY-MM-DD'), 3000, NULL, 20);
INSERT INTO T_DL_EMP VALUES (7934, 'MILLER', 'CLERK', 7782,TO_DATE('1982-01-23', 'YYYY-MM-DD'), 1300, NULL, 10);

1. 下载--自定义SQL

在页的Process中应用如下代码:

DECLAREPROCEDURE PROC_DL_CSV_M1ISlv_file_name          VARCHAR2(255);   -- CSV文件名称lt_context            apex_exec.t_context;lt_export             apex_data_export.t_export;lv_sql_txt            VARCHAR2(2000);BEGIN-- 出力ファイル名を設定lv_file_name := '员工表_' || TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS');lv_sql_txt := Q'!!';lv_sql_txt := lv_sql_txt || ' SELECT';lv_sql_txt := lv_sql_txt || '     EMPNO                             AS "员工编号"';lv_sql_txt := lv_sql_txt || '   , ENAME                             AS "员工姓名"';lv_sql_txt := lv_sql_txt || '   , JOB                               AS "职位"';lv_sql_txt := lv_sql_txt || '   , MGR                               AS "经理编号"';lv_sql_txt := lv_sql_txt || '   , TO_CHAR(HIREDATE,''YYYY/MM/DD'')  AS "入职日期"';lv_sql_txt := lv_sql_txt || '   , TO_CHAR(SAL,''FM999,999,990'')    AS "基本工资"';lv_sql_txt := lv_sql_txt || '   , TO_CHAR(COMM,''FM999,999,990'')   AS "奖金"';lv_sql_txt := lv_sql_txt || '   , DEPTNO                            AS "所在部门编号"';lv_sql_txt := lv_sql_txt || ' FROM T_DL_EMP';lt_context := apex_exec.open_query_context(p_location    => apex_exec.c_location_local_db, p_sql_query   => lv_sql_txt);lt_export := apex_data_export.export (p_context   => lt_context, p_format    => apex_data_export.c_format_csv, p_as_clob   => TRUE, p_file_name => lv_file_name);apex_exec.close(lt_context);apex_data_export.download(p_export => lt_export);EXCEPTIONWHEN OTHERS THENapex_exec.close(lt_context);RAISE;END PROC_DL_CSV_M1;
BEGINPROC_DL_CSV_M1;
END;

2. 下载--检索结果

通过IR报表的检索结果下载,先将IR报表的静态ID命名为“myReport"。

beginselect region_idinto ln_region_idfrom apex_application_page_regionswhere application_id = :APP_IDand page_id = :APP_PAGE_IDand static_id = 'myReport';lv_file_name := '员工表_' || TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS') || '.csv';lt_context := apex_region.open_query_context(p_page_id   => :APP_PAGE_ID, p_region_id => ln_region_id);apex_data_export.add_column(p_columns             => lt_columns, p_name                => 'EMPNO', p_heading             => '员工编号');apex_data_export.add_column(p_columns             => lt_columns, p_name                => 'ENAME', p_heading             => '员工姓名');apex_data_export.add_column(p_columns             => lt_columns, p_name                => 'JOB', p_heading             => '职位');apex_data_export.add_column(p_columns             => lt_columns, p_name                => 'MGR', p_heading             => '经理编号');apex_data_export.add_column(p_columns             => lt_columns, p_name                => 'HIREDATE', p_heading             => '入职日期');apex_data_export.add_column(p_columns             => lt_columns, p_name                => 'SAL', p_heading             => '基本工资');apex_data_export.add_column(p_columns             => lt_columns, p_name                => 'COMM', p_heading             => '奖金');apex_data_export.add_column(p_columns             => lt_columns, p_name                => 'DEPTNO', p_heading             => '所在部门编号');lt_export := apex_data_export.export (p_context               => lt_context, p_format                => apex_data_export.c_format_csv, p_columns               => lt_columns, p_as_clob               => true, p_file_name             => lv_file_name);apex_exec.close(lt_context);lcl_csv := lt_export.content_clob;-- MIME型を設定owa_util.mime_header('text/csv; charset=UTF-8', FALSE);-- 出力ファイル名を設定htp.p('Content-Disposition: attachment; ' || encode_filename(lv_file_name));-- HTTPヘッダをクローズowa_util.http_header_close;htp.prn(replace(lcl_csv, chr(10), chr(13)||chr(10)));-- APEXエンジンに終了htmldb_application.g_unrecoverable_error := true;
exceptionwhen othersthenapex_exec.close(lt_context);apex_error.add_error(p_message => SQLERRM, p_display_location => apex_error.c_inline_in_notification);end;

相关文章:

  • lc42接雨水
  • 江协科技OLED移植hal库
  • gcc 源码目录文件夹功能简介
  • 2020CCPC河南省赛题解
  • c++动态链接库
  • 电子电路:电位器和可变电阻是同一个东西吗?
  • CT重建笔记(五)—2D平行束投影公式
  • [已解决] LaTeX “Unicode character“ 报错 (中文字符处理)
  • 硬件工程师笔记——二极管Multisim电路仿真实验汇总
  • 给图表组件上点“颜色” —— 我与 CodeBuddy 的合作记录
  • 赋能企业级移动应用 CFCA FIDO+提升安全与体验
  • 实物工厂零件画图案例(中)
  • 56.合并区间(java)
  • 【言语理解】逻辑填空之词义辨析(10)
  • 力扣HOT100之二叉树:108. 将有序数组转换为二叉搜索树
  • 45 python csv(存储表格数据)
  • No More Adam: 新型优化器SGD_SaI
  • 前端二进制数据指南:从 ArrayBuffer 到高级流处理
  • 【鸿蒙开发避坑】使用全局状态变量控制动画时,动画异常甚至动画方向与预期相反的原因分析以及解决方案
  • C语言_动态内存管理
  • 2人恶意传播刘国梁谣言被处罚,媒体:以法律利剑劈谣斩邪,加快推进依法治体
  • 圆桌丨全球化博弈与人工智能背景下,企业如何落地合规体系
  • 以军证实空袭也门多个港口
  • 一周文化讲座|“我的生命不过是温柔的疯狂”
  • 雷军内部演讲回应质疑:在不服输、打不倒方面,没人比我们更有耐心
  • 秘鲁总统任命前司法部长阿拉纳为新总理