《Oracle之APEX深入开发指南》.doc_第1页
《Oracle之APEX深入开发指南》.doc_第2页
《Oracle之APEX深入开发指南》.doc_第3页
《Oracle之APEX深入开发指南》.doc_第4页
《Oracle之APEX深入开发指南》.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle之APEX深入开发指南Oracle ERP APEX开发指南 Author: 刘豪杰 Creation Date: April 10, 2014 Last Updated: November 29, 2018 Document Ref: Version: 1.0 Approvals: Document Control Change Record 4 Date Author Version Change Reference 10-Apr3 Junjie.liu 1.0 No Previous Document Reviewers Name Position Distribution

2、Copy No. Name Location 1 2 3 4 Note To Holders: If you receive an electronic copy of this document and print it out, please write your name on the equivalent of the cover page, for document control purposes. If you receive a hard copy of this document, please write your name on the front cover, for

3、document control purposes. Contents Document Control ii 1. APEX之系统探究 2 1.1. APEX简介 2 1.2. 环境搭建 3 1.3. APEX账户管理 6 1.4. 待定 8 2. APEX 开发 9 2.1. 开发概要 9 2.2. 页面布局、美化 10 2.3. APEX控件 13 2.4. Report经常使用增删改 16 2.5. 文件上传下载 19 2.6. 使用CSS与JS 25 2.7. 图表、报表 28 2.8. Application Express Free Plugins 35 2.9. APEX部署

4、37 3. APEX之调试、经常使用技能、API 39 4. APEXEBS集成 40 4.1. EBS中配置APEX页面调用 40 5. Reference 43 6. Open and Closed Issues for this Deliverable 44 Open Issues 44 Closed Issues 44 1. APEX之系统探究 1.1. APEX简介 1.1.1. 概述 1) Oracle Application Express是基于Web阅读器的网络即时开发、部署、运行。 2) Oracle Application Express所有页面都是存储于数据库,类似于EB

5、S的Form个性化。 3) Oracle ApplicationExpress具有易用性、灵活性及Web的安全性、集成性、可伸缩。 1.1.2. 体系结构 Application Express使用用户计算机上的Web阅读器通过Web监听程序与Oracle数据库通讯。开发,部署或运行时不需要阅读器以外的任何其他客户机软件。 Application Express页使用阅读器中的HTML来显现。页要求和提交发送到Oracle数据库中的Application Express引擎。 1.1.3. 运行环境 1) 阅读器要求 Web阅读器必须支持Java脚本和HTML4.0和CSS1.0标准。Orac

6、le Application Express建议使用以下阅读器进行开发或查看利用程序: l 微软Internet Explorer7.0或更高版本 l Mozilla Firefox 3.6或更高版本 l 谷歌Chrome4.0或更高版本 l 苹果Safari4.0或更高版本 2) 数据库及HTTP服务器要求 1) Oracle Database 11g release 1or 2,自带pl/sql网关配置比较简单,能够直接提供HTTP服务器的功能。 2) Oracle Database 10g,必须使用mod_plsql插件或是Oracle Application Express监听器来连接

7、专业的HTTP服务器。 1.1.4. 运行机制 Application Express完全驻留在Oracle的数据库中,它是由存储在数据表中的数据和大量的pl/sql对象组成.对客户阅读器发送的URL要求解析成pl/sql调用,数据库处理pl/sql调用,并将结果以HTML情势返回阅读器(sys.htp.p)。每一个页面的结果都在新的会话中,因此当Application Express引擎处理或显现1个页面的时候才会消耗数据库资源 Application Express引擎包括: 1) 异步会话状态管理 2) 认证服务 3) 授权服务 4) 页面流控制 5) 验证处理 6) 页面渲染和处理 1

8、.1.5. 学习基础 1) SQL、PL/SQL基础(必须) 2) HTML基础 深入开发的时候对html,javascript,css还是蛮重要的。 1.2. 环境搭建 1.2.1. 环境准备 操作系统、数据库、安装文件 我这边使用的是RedHat 4.2.1 + Oracle 11g + Vmware8.0 安装文件使用最新的Apex_4.2.5.zip可在网上下载 安装方式可以采取嵌入式SQL网关来监听或使用APEX Listener基于Apatch的mod_plsql来安装。 本文使用嵌入式SQL风关来安装。安装OK后当需要关闭虚拟机时把虚拟机的状态置为挂起状态,这样下次再打开时就不需

9、要再重新去配置参数。 下面的安装都是使用系统的DB用户操作 安装有问题可联系作者 1.2.2. Oracle Application Express安装step by step 1) 由于oracle 11g自带Apex3.0,因此在本次安装的时候我们首先要卸载掉3.0版本 2) 上1步全部运行OK后,在apex目录下履行rm rf *.* 创建1个TableSpace:Apex01, CREATE TABLESPACE apex01 DATAFILE /d01/oracle/SID/db/apps_st/data/apex01.dbf SIZE 100M A

10、UTOEXTEND ON NEXT 100M MAXSIZE 1000M; 3) 把之前下载的Apex4.2.5安装文件上传至$ORACLE_HOME下,然后解压至/apex目录下 4) 开始安装 5) 更改Admin用户,并解锁APEX_PUBLIC_USER,其中Admin用户密码要设置得比较复杂,必须包括大写、小写字母+特殊的符号+数字 ALTER USER ANONYMOUS ACCOUNT UNLOCK; 6) 上述步骤全部OK后,可选安装中文语言 7) 配置嵌入式pl/sql网关 8) Grant connect privileges to any host for the APE

11、X_040200 database user 9) 更改参数值 10) 以上全部OK后,APEX安装完成,可通过http:/server:8888/apex/apex_admin来管理,若出现HTTP404毛病后,请履行以下命令,若没开则把它启起来 11) 成功后则可访问访URL http:/server:8888/apex http:/server:8888/apex/apex_admin 安装到此,貌似都解决了,打开管理员网址,输入用户名、密码:ADMIN/.后发现没法通过登录授权认证,怎样解决呢?难道密码不对,因而再次更改ADMIN的密码,重启数据库,发现问题照旧,这样排除ADMIN密码

12、不对的可能,APEX授权的登录连接只有APEX_04002,这个也是没有问题的,也就是说本次的安装都是OK的,毕竟系统都启起来了,这时候候联想到是否是这个授权验证是不是还走的是之前的3.0版本的校验,履行了以下这段SQL发现确切还存在之前3.0版本的遗留用户,果断的把这些用户全部drop掉。后面不谨慎把APEX_04002也drop了,因此只好又重装,重装后1切OK。 Drop user cascade; 1.3. APEX账户管理 1.3.1. APEX账户关系图 1.3.2. ADMIN 1) ADMIN是Oracle Application Express的超级管理员 2) ADMIN可

13、以创建、删除、修改WorkSpace及Workspace的管理员 创建1个WorkSpace名为jjl,Schema为oracle ebs的apps,同时创建该workspace的管理员名为jjl 1.3.3. WorkSpace的Admin,Developer,AppEndUser 1) 使用刚创建好的WorkSpace【jjl】以管理员jjl登录 2) 登录以后为该workspace创建开发用户与app终究用户 3) 后续就能够用使用developer登录workspace【jjl】进行开发 1.4. 待定 1.4.1. 待定 2. APEX 开发 2.1. 开发概要 2.1.1. 理解W

14、orkSpace、Application WorkSpace:工作空间,1个WorkSpace对应Oracle数据库的1个Schema,形象的理解我们可以认为它就是1个工程,这个工程里面有很多的子项目Application.在与EBS的集成开发中,我们认为每一个Application可以类似于EBS中的1个Form,该Form里包括多个窗口. 本文有些截图是基于Oracle Application Express 4.2.5版本。在APEX中的页面布局、各种OBJECT的属性控制都是可以通过配置来解决的,对这类声明式的开发(不需要编译)它需要的是少许的Coding,主要是偏向于pl/sal编程

15、. Oracle Application Express可以创建Database Applications,Websheet Applications,Packaged Application 本文对应的开发都是Database Application. 2.1.2. Application授权登录机制 每一个Application都可以为其设置安全认证,创建Application的时候会让你3选1。 后期创建好后我们是可以对其登录机制进行修改。具体的APEX自带的授权登录机制有7种。 在目前的开发中我们可以选择Application Express Accounts与HTTP Header

16、Variable. 前者必须输入APEX用户名密码才可登录,后者 2.1.3. Page0 Page0是该Application的1个全局页,比如某些全局变量,全局常量都可以在该页去设置,为了方便管理我们把不同类型的变量放在不同的区域,这些区域是不显示在界面上的类似于HTML的HIDDEN. 2.1.4. 待定 2.2. 页面布局、美化 Application Express 提供了 20 个主题。每一个主题由定义利用程序外观的组件模板组成。Oracle Application Express 4.0 提供的这些现代化主题都符合 XHTML 和 CSS 标准。XHTML 页面可移植性更强、显现

17、时间更短。在项目上开发的使用的是APEX4.1.1版本,在网页布局这块比较愁闷,创建Region的Column属性是在某个 Body内是全局的,在APEX4.2.5版本中,就变得相当的Easy,可以对子子.区域的重新布局,其子子区域都会有对应的Grid Layout可以配置。 2.2.1. 页面区域展现 APEX的页面在选定主题后,其页面的布局与CSS基本上已肯定,基本上符合DIV+CSS来布局,然后把某几个经常使用的DIV【Body1、Body2、Body3、Postion1、Position2、Position3、Position4】放开给Developer开发使用。其中Body区域在HT

18、ML中是以展现,Position区域在HTML中是以展现 其中我们经常使用的区域为红色标记的区域。 实例创建区域的布局如图: 如何实现以上布局呢?在这里首先还是得明白HTML中的基本元素及这些元素附带的1些属性. 上图相信对TABLE能1目了然了。那这些HTML的标签是如何对应APEX中的配置呢?请看下图来自APEX的Grid Layout的配置 Start New Grid:意为着当前的Object是不是采取新的网格布局,即是不是采取1个新的展现,不基于上1个的布局展现(比如可以重新定义列数,) Start New Row:意为着当前的Object是不是换行显示,即展现 Column:意为着

19、当前的Object是在该确当前行的第几列展现. 那末像上面布局图中的 Search3的区域布局配置为: Newsearch1的区域布局配置为: Newsearch3的区域布局配置为: 同理要实现更复杂的布局基于上述原则也是实现起来比较简单的。配配就OK了 2.2.2. 标题待定 2.3. APEX控件 APEX作为1个强大的快速开发工具,固然少不了1些经常使用的控件,下拉框Commbox,值列表Lov,文本框Text,日历DataPick,报表Report,。这些控件的基本使用可参考 我们知道控件都是可以有很多属性、事件、校验、Dynamic Action。 其中Dynamic Action是

20、可以做很多操作的,比较重要的是履行pl/sql时类似于Ajax的无刷新 控件属性: l Form Element Width:控件的宽度 l Horizontal / Vertical Alignment:控件的显示位置还有Label显示位置。 l Value Required:是不是必输入。 l Condition Type:控件显示的条件,只有满足了才显示。 l Read Only Condition Type,:控件只读的条件,只有满足了才只读。 l Default value:设置控件的默许值。 l Format Mask:控件值的格式掩码 事件: 事件定义也是有属性可配置的: l C

21、ondition Type:履行事件的条件条件 l True Actions:事件产生后,对应控件的校验条件为真时履行的动作。 l False Actions:事件产生后,对应控件的校验条件为假时履行的动作。 l WHEN Condition:事件产生后,履行相应的动作的判断条件。 校验属性: l When Button Pressed :触发校验的Button l Condition Type:触发校验的条件条件 l Condition Expression:校验表达式 l Validation:履行相应的校验 l Error message display location:毛病信息显示方

22、式 l Associated Item:毛病信息关联到指定的Object 下面做个具体的实例使用这些属性、事件、校验 1、 点击Button: Search2 Btn时校验 X_Text1值是不是为空,满足校验的条件条件是jjl_test表中存在记录user_id=123; 2、 当页面加载完,DatePick:Data init值赋值为当前日期 3、 当X_text2值不为空时,Region:new search2隐藏,否则显示 终究效果图: Step By Step操作 1、 创建1个页面命名为Page2 2、 Pl/sql apps登录创建table:jjl_test(user_id v

23、archar2(50),resp_id varchar2(50),resp_appl_id varchar2(50),login_name varchar2(50),login_count number,login_date date); insert into jjl_test values(123,); 3、 在Page2中创建6个html region,对应的Parent Regionn选择Page Template Body(1) 4、 Search1,search2,search3 属于同1个TABLE,属性Column顺次为1,2,2. 属性Start New Grid顺次为Yes

24、,No,No. 属性Start New Row顺次为Yes,No,Yes. 5、 New Search1,new search2,new search3 属于同1个TABLE,属性Column顺次为1,2,3. 属性Start New Grid顺次为Yes,No,No. 属性Start New Row顺次为Yes,No,No. 6、 在search1中创建TextField:P1_X_TEXT,P2_X_TEXT,search2中创建Button :SEARCH2_BTN,search3中创建DatePick:DATA,new search2中创建子区域:newsearch_subpage1,

25、new_search3_subpage2,new_search3_subpage3, 属于同1个TABLE,属性Column顺次为1,2,1. 属性Start New Grid顺次为Yes,No,No. 属性Start New Row顺次为Yes,No,Yes 7、 P1_X_TEXT鼠标右键创建相应的Validation: Name:X_TEXT1 IS NOT NULL When Button Pressed:SEARCH2_BTN. Condition Type:Exists(SQL query returns at least one row) Condition Expression

26、 1:select 1 from jjl_test jt where jt.user_id=123; Validation Type:Function Returning Boolean Validatoin Expression:begin if :P1_X_TEXT is not null then return true; end if; return false;end; Error message:X_TEXT1 cant be null; 8、 P2_X_TEXT鼠标右键创建相应的Dynamic Actions: Name:Dynamic_action1; Conditon Typ

27、e:Always; When Event:Change When Selection Type:Item(s) When Item(s):P2_X_TEXT When Condition:is not null True Actions:Hide Region(new search2) False Actions:Show Region(new search2); 9、 创建PageLoad型的Dynamic Action Name:page_load_set_date; Condition Type:Dynamic Actoin Not conditional When Event:Page

28、 Load When Condition No Condition True Actions:Set Value Set Value/Settings/Set Type:SQL Statement Set Value/Settings/SQL Statement:select sysdate from dual; Set Value/Affected Elements/Selection Type:Item(s) Set Value/Affected Elements/Item(s):DATA 2.4. Report经常使用增删改 通常在APEX中对记录的增删改是通过链接到新的页面去实现单条数

29、据的更改。本节主要介绍如何在1个Tabular Form中不链接实现多行数据的增删改和客户化逻辑。APEX的Tablular Form开发类似于EBS Form开发,也是基于视图去开发。 下面实例开发1个Form,当更改用户的class_name与login_name时,更新用户的login_name,然后在另外一张表校验class_name是不是存在,若不存在报错,若存在则把当前勾选的记录插入另外一张表jjl_test3 1、 数据库中先创建APEX页面的Tabular Form的View,同时创建1个APEX页面并创建Tabular Form 2、 create table jjl_cla

30、ss(class_id number,class_name varchar2(50); create or replace view jjl_class_test2 as SELECT jt.user_id, jt.resp_id, jt.resp_appl_id, jt.login_name, jc.class_name FROM jjl_test2 jt, jjl_class jc WHERE jc.class_id = jt.class_id; 3、 配置页面Tabular Form数据源 4、 创建1个RegionButton:Apply Change 5、 为Apply Change

31、创建Process: 6、 运行效果如图: 当class_name不存在于jjl_class表中时 当输入的class name存在时,运行的效果与结果如图: 把BBB更改成DDD 点击Apply Change后 2.5. 文件上传下载 真是麻雀虽小,5脏俱全,上传下载在Apex里的实现是非常easy.下面的例籽实现 文件上至数据库 - Create table 1、create table JJL_FILE ( id NUMBER, file_nmae VARCHAR2(50), file_memetype VARCHAR2(50), file_blob BLOB, file_comment

32、s VARCHAR2(200), file_charset VARCHAR2(20), last_update_date DATE) 2、创建Page:updown load file,在该page中创建html区域:upload file 由于数据文件是上传至数据库表,需要在页面上传文件之前,可以在加载完head后去表里 Fetch Row from jjl_file,然后在页面上创建相应的hidden项与表jjl_file中相字段相应。就像在pl/sql中要往表里插1行记录时,可以先定义该表的Rowtype类型的变量,然后再做赋值与Commit; 创建相应的region item,type

33、:hidden分别为p_file_id,p_file_name,p_file_charset,p_file_memetype 创建processes:fetch row from jjl_file; 上图中的table name要大写. 双击之前hidden项,配置每项的Source属性,保持与jjl_file的列名1致。如P_FILE_ID对应JJL_FILE中的ID。 4、在区域upload file中创建File Browse项,具体配置以下: 以上都对应数据库中的表jjl_file相应的字段。 5、创建区域button:upload file 6、为region item:FILE_B

34、LOB创建Validation:点击UPLOAD_FILE按钮时验证FILE_BLOB不能为空. 7、SubmitPage后履行以下Processes: Process Row of JJL_FILE,配置以下图 运行效果如图: 上传APEX技术开发文档.doc 7.5M Pl/sql中查看保存结果: 下载文件的实例: 创建1个interactive report名为downlaod file,配置其Sourceo: SELECT jf.id, jf.file_nmae, jf.file_memetype, jf.last_update_date, dbms_lob.getlength(jf.

35、file_blob) file_size, dbms_lob.getlength(jf.file_blob) download FROM jjl_file jf 创建OK后双击report:download file,配置列download为blob如图: 运行效果如图: 下面做1个页面Report数据的下载链接 1) Classic Report 的下载链接配置 在Report的Attribute里做以下配置 运行效果如图: 2) Interactiive Report的下载链接配置 URL: /f?p=: app_id is the application id page_id is th

36、e page id session_id is the session id : CSV or HTMLD 创建Interactive report region下的1个Display Only项,Settings配置以下: 运行效果如图: 2.5.1. Wait for 2.6. 使用CSS与JS 在做相对照较复杂或比较个性化的APEX页面时还是需要用到1些JavaScript脚本和CSS。 下面做1个用JavaScript给Report表格中列赋值.效果如图: 创建Report,构建相应的列的HTML标签 设置每列的显示方式 创建page_item_button 为page_item_bu

37、tton创建Dynamic Action履行Set Value动作 Set Value/Settings/Set Type:Javascript Expression Set Value/Settings/Javascript Expression: 再做1个使用CSS来控制页面中元素的显示,由于之前项目上有些Report需要显示很多列,致使把页面拉得很宽,而在APEX4.1.1版本中没有相应的CSS模板,因此需要自己来控制Report的显示。 如上图给Region加转动条,并为转动条赋上相应的色彩、控制转动条的显示形状。 开发步骤: 1、 首先在Page页面HTML Header and B

38、ody Attribute属性中定义CSS .css1width: 752px; height: 380px; -ms-overflow-x: scroll; -ms-scrollbardlight-color: rgb(235, 235, 228); -ms-scrollbar-shadow-color: rgb(179, 221, 247); -ms-scrollbar-highlight-color: rgb(179, 221, 247); -ms-scrollbar-darkshadow-color: rgb(235, 235, 228); -ms-scrollbar-arrow-co

39、lor: rgb(0, 0, 0); -ms-scrollbar-track-color: rgb(244, 244, 240); ms-scrollbar-face-color: rgb(179, 221, 247); 2、 在Page页属性JavaScript:Excute When Page Loads document.getElementById(“t20BreadCrumbsLeft“).className = “css1“; 3、 Coding截图 固然上述只是1个很简单的例子来介绍如何去使用CSS控制APEX对象. 在APEX4.2.5版本中已有带转动条的模板可选择了,但仍然还

40、是有缺点,Report header Row不能固定,它会随转动条向下转动而被覆盖 2.7. 图表、报表 Application Express3.0以后支持HTML5 Chart 与Flash Chart,支持2D/3D的柱状图、水平条形图、饼图和圆环图、折线图、K线图、计量表、甘特图。(这几个图表插件Buy from AnyChart) 下面实例step by step 发柱状和饼图。 准备工作:创建1个Application,在新的Application中创建1个页面Page1 在新的Page1中创建1个HTML区域 命名为new search1(序列号50)。Pl/sql登录往tabl

41、e:jjl_test里插入值: 1) 在区域new search1中右键选择 Create Sub Region,弹出的页面当选择 Chart,点击Next,选择ChartType:Column/3D Column,Chart Rendering:HTML5 Chart 2) 定义需要创建的Chart:Display Attributes,如图 上图中的 Color Scheme:是Chart的显示色彩主题,也可支持自设色彩。 Show Grid:Y-axis 设置Y轴显示网络 Show ints: 设置当鼠标移动到柱状图上时是不是显示提示信息。 Show Labels:设置Chart的柱状条

42、下是不是显示名称 Show Values: 设置是不是显示柱状条的值 3) 点击Next 设置Source,即该Chart的数据源。数据源的SQL有两种写法,第1种是直接赋SQL。 SELECT NULL url, to_char(jt.login_date, MON RRRR) label , SUM(decode(jt.login_name, admin, jt.login_count, 0) “admin“, SUM(decode(jt.login_name, developer, jt.login_count, 0) “developer“, SUM(decode(jt.login_n

43、ame, end user, jt.login_count, 0) “end user“, SUM(decode(jt.login_name, super admin, jt.login_count, 0) “super admin“ FROM jjl_test jt GROUP BY to_char(jt.login_date, MON RRRR) 配置图表的Source的SQL,第1列为URL,即点击柱状条的1个链接,第2列为2)里的Show Labels的Label值.后面的SQL例为2)里的Show Values的Value 第2种写1个pl/sql表达式 CREATE or REPL

44、ACE function login_data_fn l_qry VARCHAR2(32767); BEGIN l_qry := SELECT null, to_char(jt.login_date, MON RRRR) label ; -Loop through the login_name and add a sum(decode.) column with column alias FOR r1 IN (SELECT DISTINCT login_name FROM jjl_test) LOOP l_qry := l_qry | sum(decode(jt.login_name, | r

45、1.login_nmae | , jt.login_count,0) | r1. login_nmae | ,; END LOOP; -Trim off trailing comma l_qry := rtrim(l_qry, ,); -Append the rest of the query l_qry := l_qry | FROM jjl_test jt GROUP BY to_char(jt.login_date, |MON RRRR|); RETURN l_qry; END login_data_fn; 运行效果图: 当配置Source为某1个月的时候,运行效果以下图: 当在第1个3

46、D柱状图表中再配置1个Source: 运行效果如图: 同理 饼图制作也如上述1致,只是配置Chart Type为Pie/3D Pie,配置Source的时候SQL赋值为: 运行效果图 2.7.1. PDF、Word、Excel报表开发 与EBS的报表开发1样,也是基于xml+layout,简单的举个例子便可 创建xml Data 创建layout, Xml 绑定布局文件rtf 在page中创建button:Print Action:Download Printable Report Query Report Query:testquery 运行效果如图: 2.8. Application Ex

47、press Free Plugins 2.8.1. LOV Apex中的Lov是很简陋的,没法与EBS Form中的LOV媲美,不支持显示多列,不支持返回多列值,下图中的User即为1个LOV。 这样的LOV在实际业务中很难满足客户的需求. Skillbuilders提供了开源的免费Super_lov插件.比较强大,能很好的解决上述需求。 l 支持LOV Title l 支持LOV即时输入验证 l 支持LOV显示多例 l 支持LOV返回多例 下面就实现上述的1个User的LOV。 1、网上下载apex_super_lov插件,导入至Application 2、在Region search1中创

48、建1个Page Item选择Plug-ins 3、点击下1步选择刚导入的super_lov,做以下配置 1) List of values desfinition:定义LOV的数据 2) Enterable :Enterable-Restrictred to Lov 支持输入并做即时校验,若输入的数据不存在则跳出Lov对话框 3) Item Display & Return Columns:1,2 即为当前控件New User设置点击LOV后的显示列值与返回例值 4) Searchable Columns:1,2 支持对哪些列进行数据查询 5) Hidden columns:可以对某些列做隐藏

49、 6) Map From Columns & Map To Items 用来设置其它列返回给界面上的Object项. 效果图: 2.8.2. Seclect List 2.8.3. Report 2.9. APEX部署 Application Express程序不需要编译、依赖Oracle数据库的即时运行。对开发员来讲程序的部署在系统上线之前的UAT进程是很常见的。由于它所有的对象都是存在于数据库,因此就像导数据库对象1样,可以把它导出为1个SQL文件。固然这里是对1个Application做导入做出。 如图: 导入Application至WorkSpace: 点击上图的导入选择需要导入的SQ

50、L文件,然后step by step 3. APEX之调试、经常使用技能、API API 发送邮件 :APEX_MAIL.SEND( p_to = , p_from = DO_NOT_REPLYREQS, p_subj = | l_who | Has Covered | l_job | at | l_client | CHR (10), p_body = just for test); COMMIT; apex_mail.push_queue (); PL/SQL中履行页面的跳转控制 begin . code which can raise an exception . owa_util.redirect_url(); apex_application.stop_apex_engine; exception when apex_application.e_stop_apex_engine then raise; - raise again the stop APEX engine exception when others then .; - code to handle the exception end; 4. APEXE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论