二次开发中附件的使用实例
二次开发包使用说明书

二次开发包使用说明书(版本V1.1)目录一、DEMO软件使用步骤 (3)1.1串口通讯单个显示屏 (3)1.1.1设置屏幕参数以及模组参数 (3)1.1.2打开DEMO软件 (6)1.1.3发送数据 (6)1.2串口通讯多个显示屏 (7)1.2.1设置屏幕参数以及模组参数 (7)1.2.2 打开DEMO软件 (9)1.2.3发送数据 (9)1.3 TCP/IP通讯单个显示屏 (9)1.3.1 设置屏幕参数以及模组参数 (9)1.3.2 打开DEMO软件 (12)1.3.3 发送数据 (12)1.4 TCP/IP通讯多个显示屏 (13)1.4.1 设置屏幕参数以及模组参数 (13)1.4.2 打开DEMO软件 (14)1.4.3 发送数据 (14)二、节目编辑流程 (14)三、调用顺序样例 (15)开发包使用说明软件使用步骤使用步骤一、DEMO软件单个显示屏1.1串口通讯串口通讯单个显示屏1.1.1设置屏幕参数以及模组参数主要设置屏幕参数以及模组参数,设置参数应使用“LED图文屏编辑控制平台”软件,设置步骤如下。
1)进入“LED图文屏编辑控制平台”中的硬件参数,设置参数。
参数设置完后,点击“发送后保存”。
2)打开二次开发包中的配置文件(.ini文件)打开二次开发包中的LED.INI文件。
参数配置说明参数配置说明::[地址:1]LinkAddr=1CardType=HL06ACOMPort=COM1LinkMode=串口IPAddr=PortNO=8000BaudRate=9600bpsColor=2Width=512Height=256① 控制卡地址"[地址:n]"和"LinkAddr" 范围为:1~253;② 控制卡类型CardType 的取值为: HL00、HL01、HL02、HL03A 、HL06A 、HL06A+ ③ 控制卡通讯模式“LinkMode ”的取值为:串口、TCP/IP④ 控制卡以太网参数:“IPAddr ”和“PortNO ”:IPAddr 取值:实际卡所配置IP 地址如:192.168.0.2PortNO 取值:实际卡所配置端口如:8000注:仅TCP/IP 模式需配置该参数⑥ 显示屏的宽度和高度分别为“Width ”和“Height ”:Width 取值范围: 8~屏幕高度,并且是8的倍数,Height 取值范围:8~屏幕高度⑦串口波特率和串口号分别为“BaudRate”和“COMPort”:BaudRate取值为:9600bps,38400bps,115200bps;COMPort取值为:COM1、COM2、COM3、...... (注:COM1为COM1口,COM2为COM2口);⑧显示屏颜色:0~3;0.单色屏(红色),1.单色屏(绿色),2.双色屏(红色&绿色),3.双色屏(绿色&红色)注意:*地址的个数可以根据实际显示屏的个数添加;*不要修改该文件的文件名及后缀;*该文件必须和应用程序放在同一个目录下。
solidworks api二次开发实例详解 -回复

solidworks api二次开发实例详解-回复如何进行SolidWorks API二次开发实例的详解SolidWorks是一款常见的三维计算机辅助设计(CAD)软件,用于创建和编辑各种机械设计、装配和零件模型等。
它具有功能强大的应用编程接口(API),允许开发人员自定义和扩展软件的功能。
在本文中,我们将通过一个实例来详细介绍SolidWorks API的二次开发过程。
1. 环境设置首先,我们需要确保已经正确设置SolidWorks的开发环境。
在SolidWorks安装目录中,找到并运行"swvisualizeapi.exe"文件,按照提示安装Visualize API。
接下来,打开SolidWorks软件,点击"工具"->"宏"->"编辑",在"选项"对话框的"VBA环境"选项卡中,勾选"显示工具栏"和"显示添加-Ins",以便在开发过程中方便调试和查看结果。
2. 创建新的宏在SolidWorks中点击"工具"->"宏"->"新建"来创建一个新的宏。
在该宏中,我们将使用VBA代码进行二次开发。
首先,我们需要定义一个模块(Module)来存储我们的代码。
在"Macros in"下拉菜单中选择"NewMacros",然后点击"创建",在弹出的对话框中命名新模块为"API_Example"。
接下来,在模块中输入以下代码:vbaOption ExplicitSub API_Example()' 在此处编写您的代码End Sub接下来,我们将在此处编写我们的代码。
3. 加载程序集在编写SolidWorks API代码之前,我们需要加载SolidWorks程序集。
solidworksapi二次开发实例详解 -回复

solidworksapi二次开发实例详解-回复Solidworks API二次开发实例详解Solidworks是一款广泛应用于机械设计和3D建模的软件,其强大的API功能使用户能够进行二次开发,实现更高效、更个性化的工作流程。
本文将以Solidworks API二次开发实例为主题,为您详细介绍该过程的每一步骤。
第一步:API的基础知识和环境准备在进行Solidworks API二次开发之前,需要先掌握API的基础知识,了解其用途和功能。
同时,您还需要准备一个Solidworks软件的开发环境,包括安装Solidworks、安装API软件开发包(SDK)以及设置开发工具。
第二步:创建API应用程序在开始二次开发之前,我们需要创建一个API应用程序。
可以使用各种编程语言来开发Solidworks API应用程序,如C#、、C++等。
这里以C#语言为例。
首先,创建一个新的项目并引用Solidworks API 库。
第三步:初始化Solidworks在API应用程序中初始化Solidworks,以便可以与Solidworks建立连接并执行各种操作。
这可以通过以下代码实现:SldWorks swApp;ModelDoc2 swModel;swApp =(SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swModel = (ModelDoc2)swApp.ActiveDoc;首先,我们创建了一个SldWorks对象并通过GetActiveObject()方法获取了当前激活的Solidworks应用程序。
然后,我们获取了当前活动文档的ModelDoc2对象。
第四步:访问Solidworks对象模型在Solidworks API中,所有的对象和操作都是基于对象模型的。
通过访问和操作对象模型,我们可以实现各种功能。
例如,我们可以访问零件、装配体、图纸等对象,以及它们的属性和方法。
ADAMS二次开发及实例

第11章 ADAMS二次开发及实例ADAMS具有很强的二次开发功能,包括ADAMS/View界面的用户化设计,利用cmd语言实现自动建模和仿真控制,通过编制用户子程序满足用户的某些特定需求,甚至可以拓展ADAMS的功能。
本章主要介绍如何定制用户化界面、宏命令的用法和条件循环命令的用法,以及综合以上功能的应用实例。
由于用户子程序的主要内容已在第9章进行了详细介绍,因此本章只对所涉及到的用户子程序编译联接操作过程进行简单介绍.11。
1 定制用户界面ADAMS/View的界面对象都是以层次结构存储在模型数据库中,类似于零件模型的层次结构。
所有定制的界面对象都存储在名为GUI的数据库中,该数据库可以很方便地管理所有的标准界面对象。
如图11—1所示。
图11—1 界面对象的层次结构机械系统动力学分析及ADAMS应用最上层的界面对象是窗口和对话框。
如果主要建模窗口起名为main的话,其数据库全名应为.gui。
main。
尽管窗口和对话框看起来很相似,但它们却是很不相同的。
窗口通常是在用户工作的时候在屏幕上停留一段时间,而对话框通常是在用户输入数据或是进行访问控制时才会出现.窗口有工具条和菜单栏,窗口和对话框也包含其他的界面对象如按钮,标签等等。
大多数用户化操作涉及到创建对话框或者修改标准对话框。
但若不用创建一个完整的用户化界面时,则通常只用修改菜单条和工具栏。
ADAMS所包含界面对象属性如表11-1所示。
表11—1 ADAMS所包含界面对象属性第11章ADAMS二次开发及实例Option menu(可选菜单项)在多个菜单项中作一选择包含一个弹出菜单的图框只显示一行选定菜单项Radio boa(状态设置框) 设置状态和模式Tab container(标签界面对给界面和对话框设置标签象)Data table(数据表)用来显示数据的表格,你可增加栏或列在大多数情况下,用户定制界面是指制作用户自己的菜单和对话框。
通常可使用菜单编辑器和对话框编辑器来定制界面,通过它们可以很快地访问并改变大多数界面对象和功能。
solidworksapi二次开发实例详解

solidworksapi二次开发实例详解摘要:一、SolidWorks API 简介1.SolidWorks API 的作用2.SolidWorks API 的版本和语言支持二、SolidWorks API 二次开发基础1.安装SolidWorks API2.熟悉SolidWorks API 开发环境3.SolidWorks API 主要功能模块三、SolidWorks API 二次开发实例1.零件属性读取2.模型转换为STEP 文件3.自动化装配四、SolidWorks API 二次开发注意事项1.避免与SolidWorks 软件版本不兼容2.确保API 功能正确使用3.遵循SolidWorks API 使用规范正文:SolidWorks API 二次开发实例详解一、SolidWorks API 简介SolidWorks 是一款广泛应用于机械设计的三维建模软件,其API(应用程序编程接口)为开发者提供了丰富的二次开发功能。
通过SolidWorks API,开发者可以实现对SolidWorks 软件的深度定制,满足企业或个人在设计、建模、分析等方面的特定需求。
SolidWorks API支持多种编程语言,如VBA、、C#和C++等。
二、SolidWorks API 二次开发基础1.安装SolidWorks API在进行SolidWorks API 二次开发前,首先需要在官方网站下载并安装相应的API。
根据SolidWorks 版本和编程语言选择合适的API 组件。
2.熟悉SolidWorks API 开发环境安装完成后,需要熟悉SolidWorks API 的开发环境。
对于不同编程语言,开发环境有所差异。
例如, 开发者需要安装Visual Studio,C#开发者需要安装Visual Studio 或MonoDevelop 等。
3.SolidWorks API 主要功能模块SolidWorks API 主要包括以下功能模块:- Application:应用程序相关API- Assembly:装配体相关API- Feature:特征相关API- Part:零件相关API- Drawing:图纸相关API- Model:模型相关API三、SolidWorks API 二次开发实例1.零件属性读取通过SolidWorks API,可以实现对零件属性的读取。
ug二次开发与实例精解(pdf+源代码)

ug二次开发与实例精解(pdf+源代码)UG二次开发是指在已有的UG软件的基础上,通过编写一定的程序代码,扩展UG软件的功能,满足用户的特定需求,提高UG软件的应用价值和使用效率。
UG二次开发可以通过以下方式进行:1. 应用程序编程接口(API)开发:UG软件提供了API,用户可以通过编写代码调用API,实现所需功能。
2. 用户自定义特征(UDF)开发:用户可以通过UDF功能,自定义UG软件的一些特殊功能。
3. 脚本编程:用户可以通过编写脚本,对UG软件进行操作,实现所需功能。
UG二次开发的实例有很多种,以下是其中几种常见的实例:1. 零件加工路径优化:UG软件默认的加工路径可能不是最优的,用户可以通过二次开发,在加工路径规划中添加一些优化算法,使加工路径更加高效。
2. 自动化设计验证:UG软件提供了一些设计验证功能,但是这些功能需要手动进行操作,用户可以通过二次开发,自动化进行设计验证,提高设计效率。
3. 机器人编程辅助:机器人编程比较复杂,可以通过二次开发,实现对机器人的路径规划和动作指令的自动化生成,提高编程效率。
4. 绘图标准化:UG软件默认的绘图标准可能不符合公司的要求,用户可以通过二次开发,实现自定义标准,使绘图规范化和标准化。
以上仅是UG二次开发的部分实例,随着工业技术的发展和企业的需求,UG二次开发的应用场景会越来越广泛,提高企业的数字化程度和竞争力。
UG二次开发的源代码主要是针对用户自定义功能进行编写,具体编写过程如下:1. 编写需求文档:用户需要明确自己的需求,将需求写成文档形式,明确功能的作用、输入输出等信息。
文档还需要包括程序的安装方式和使用说明等。
2. 选择编程语言:UG二次开发可以用多种编程语言实现,包括C++、C#、和Java等。
选择编程语言时需要考虑编程语言的适用场景和编程人员的编程水平。
3. 编写代码:依据需求文档,使用选择的编程语言编写代码。
在编写代码时需要注意代码的可读性和可维护性,避免代码臃肿、难以理解。
【医疗信息化】医院信息系统的二次开发模式介绍及实例

医院信息系统的二次开发模式介绍及实例徐晓辉①王前①苏小刚①①空军总医院计算机中心,100142,北京市海淀区阜成路30号摘要本文讨论了基于原有系统的主要二次开发方法模式,并结合实际,介绍了本院科间会诊系统的开发工作。
从实际临床使用来看,极大提高了科间会诊的效果和质量。
关键词二次开发闭环管理科间会诊1 引言伴随着卫生体制改革的深入推进,医院信息化系统在支持临床诊疗、辅助决策等方面发挥的作用日益增强,各职能部门对信息的需求也是层出不穷。
一套软件在投入使用多年后,想要满足不断涌现的新需求是不现实的。
因此,各医院一般都会在深入分析软件功能,熟悉掌握数据结构的基础上,结合本院的工作流程与实际情况,采用不同模式,进行适当程度的二次开发[1],从而满足相应的需求,保障业务的正常运行。
2 二次开发模式2.1 模式分类二次开发模式主要有4 种模式[2],分别是:语句级、数据结构级、子系统级和系统级。
语句级:最基础、最常用的模式。
指在原系统环境下,利用Powerbuilder 或Toad 等工具,采用SQL 语言的select 语句从原数据库中提取数据。
数据结构级:指通过修改、增加原数据库中表、视图、触发器等,并结合SQL 语句,来实现某种功能或解决某种问题。
子系统级:指利用系统平台的服务器端,直接进行客户端模块或软件的二次开发,具体有三种情况:(1)不对原数据库的数据结构进行修改,只从数据库中提取数据,不增加数据库的额外开销。
基于原系统软、硬件平台,不新增表空间,不额外增加的数据库开销,采用C/S 架构,以Powerbuilder 为开发工具,对相关语句及模块进行集成。
(2)修改原数据库的数据结构,即新增表、表空间、角色、用户授权等;同时也保持相对于原系统的独立性。
(3)设置客户端本地数据库,采用C/S 模式,基于 技术,利用Visual Basic 等开发工具,设置客户端本地数据库,实现符合需求的开发。
系统级:指进行独立的完整的客户端、服务器端系统的开发,具体有三种情况:(1)通过中间件与原数据库进行通信,依托该数据库,对数据结构进行修改。
solidworksapi二次开发实例详解

SolidWorks API二次开发是指通过SolidWorks提供的API接口来实现对SolidWorks软件的二次开发功能。
这种开发方式可以使用户根据自身需求定制功能,提高工作效率,丰富软件的应用场景。
本文将通过详细的实例来介绍SolidWorks API二次开发的相关内容,帮助读者更好地理解和应用这一技术。
一、SolidWorks API介绍SolidWorks是一款流行的三维CAD软件,广泛应用于机械设计、工程设计、汽车工业等领域。
SolidWorks提供了丰富的API接口,允许用户通过编程的方式对软件进行定制和扩展。
通过API接口,用户可以实现诸如模型创建、几何操作、特征编辑、文件处理等功能,从而满足特定的设计和工程需求。
二、SolidWorks API二次开发实例下面将以几个实际开发场景为例,介绍SolidWorks API二次开发的具体实现方法和技巧。
1. 模型创建与编辑在SolidWorks中,用户可以通过API接口实现对模型的创建和编辑。
可以通过编程的方式创建各种基本几何体,如立方体、圆柱体、球体等。
也可以对已有的模型进行编辑和修改,包括几何参数的调整、特征的添加和删除等操作。
这为用户提供了更灵活的设计手段,使其能够更好地应对复杂的设计需求。
2. 数据导入与导出SolidWorks API还支持对外部数据的导入与导出。
用户可以通过编程的方式将其他格式的CAD文件导入到SolidWorks中,并在其中进行进一步的编辑和修改。
同样地,用户也可以将SolidWorks模型导出为其他格式的文件,以满足不同系统和软件的需求。
3. 自动化设计与分析利用SolidWorks API,用户可以实现一些自动化的设计和分析功能。
可以通过编程来实现一些复杂的几何操作,从而自动化地生成某类特定的设计。
也可以实现对模型的自动化分析,提取其中的某些关键信息,并进行进一步的处理和应用。
4. 用户界面定制除了对模型进行操作外,SolidWorks API还支持用户界面的定制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.appc、参照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.app3、参照fnd_gfm,改写成自己的包,或者简单点改写本Package也行3、需要把我们写的包在system administrator --> security --> Web PL/SQL里面注册一下,不然通过IE打开会提示用户名和密码4、本测试把在“接口”fnd_lobs_document中的附件,按照EBS的做法保存到fnd_lobs,也可以改写代码保存到自己的表,一般没必要,我们自己的表保存File_ID即可5、一个表中的BLOB等数据可以直接插入另一个表********************************************//***************上传文件下载过程*************1、初始化access idselect 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的相应trigger4、查看File_IDSELECT 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,p_access_id IN NUMBER,p_purge IN VARCHAR2 DEFAULT NULL);PROCEDURE download_file_html(p_file_id IN NUMBER,p_access_id IN NUMBER,p_purge IN VARCHAR2 DEFAULT NULL);END;/CREATE OR REPLACE PACKAGE BODY oracle_up_down IS--add '/' to a stringFUNCTION trail_slash(p_val IN VARCHAR2) RETURN VARCHAR2 ISl_copy_val VARCHAR2(2000);BEGINl_copy_val := p_val;WHILE (substr(l_copy_val, -1, 1) = '/') LOOPl_copy_val := substr(l_copy_val, 1, length(l_copy_val) - 1);END LOOP;RETURN l_copy_val || '/';END;PROCEDURE err_msg(NAME VARCHAR2) ISBEGINfnd_message.set_name('FND', 'SQL_PLSQL_ERROR');fnd_message.set_token('ROUTINE', 'FND_GFM.' || NAME);fnd_message.set_token('ERRNO', SQLCODE);fnd_message.set_token('REASON', SQLERRM);END err_msg;/*从fnd_gfm拷贝过来,原来的代码是删除整个fnd_lobs_document,不知道为何,现在改为仅删除上传的文件 */FUNCTION confirm_upload(access_id NUMBER,file_name VARCHAR2,program_name VARCHAR2 DEFAULT NULL,program_tag VARCHAR2 DEFAULT NULL,expiration_date DATE DEFAULT NULL,LANGUAGE VARCHAR2 DEFAULT userenv('LANG'),wakeup BOOLEAN DEFAULT FALSE)RETURN NUMBER ISfid NUMBER := -1;fn VARCHAR2(256);mt VARCHAR2(240);bloblength NUMBER; -- bug 3045375, added variable to set length of blob.BEGINIF (fnd_gfm.authenticate(confirm_upload.access_id)) THENSELECT fnd_lobs_s.NEXTVAL INTO fid FROM dual;fn := substr(confirm_upload.file_name,instr(confirm_upload.file_name, '/') + 1);-- bug 3045375, added select to get length of BLOB.SELECT dbms_lob.getlength(blob_content), mime_type INTO bloblength, mtFROM fnd_lobs_documentWHERE NAME = confirm_upload.file_nameAND rownum = 1;-- bug 3045375, added if to check length of blob.IF bloblength > 0 THENINSERT INTO fnd_lobs(file_id,file_name,file_content_type,file_data,upload_date,expiration_date,program_name,program_tag,LANGUAGE,file_format)(SELECT confirm_upload.fid,fn,ld.mime_type,ld.blob_content,SYSDATE,confirm_upload.expiration_date,confirm_upload.program_name,confirm_upload.program_tag,confirm_NGUAGE,fnd_gfm.set_file_format(mt)FROM fnd_lobs_document ldWHERE = confirm_upload.file_nameAND rownum = 1);IF (SQL%ROWCOUNT <> 1) THENRAISE no_data_found;END IF;UPDATE fnd_lob_accessSET file_id = fidWHERE access_id = confirm_upload.access_id;IF wakeup THENdbms_alert.signal('FND_GFM_ALERT' || to_char(access_id),to_char(fid));END IF;-- bug 3045375, added else to return fid = -2.ELSEfid := -2;END IF;DELETE FROM fnd_lobs_document ldWHERE = confirm_upload.file_name;--delete from fnd_lobs_documentpart;END IF;RETURN fid;EXCEPTIONWHEN OTHERS THENDELETE FROM fnd_lobs_document ldWHERE = confirm_upload.file_name;--delete from fnd_lobs_documentpart;err_msg('confirm_upload');RAISE;END;PROCEDURE upload_file(p_file_name IN VARCHAR2, p_access_id IN NUMBER) IS l_file_id NUMBER;BEGINl_file_id := confirm_upload(access_id => p_access_id,file_name => p_file_name,program_name => g_package_name);IF l_file_id NOT IN (-1, -2) THEN-- File upload completedhtp.htmlopen;htp.headopen;htp.title('文件上传');htp.headclose;htp.bodyopen;htp.img2('/images/wwcban.jpg', calign => 'Center', calt => 'Logo');htp.br;htp.br;htp.p('<h4>' || '文件上传' || '</h4>');htp.hr;htp.p(htf.bold('文件上传完成。