ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:18.49KB ,
资源ID:16567574      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16567574.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PLSQL程序嵌入JAVA程序Word文档下载推荐.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PLSQL程序嵌入JAVA程序Word文档下载推荐.docx

1、也再回忆下当时很牛X,现在还依然感觉很酷的纯命令编译程序吧编译带包的java类(以包名为pra,类名为HelloWorld为例):javac -d . HelloWorld.java运行带包的类:java pra.HelloWorld生成API文档(生成在docs文件夹下):javadoc -d .docs HelloWorld.java生成带相应描述的API文档:javadoc -version -author -d打jar包:jar -cvf pra.jar解压jar包:jar -xvf pra.jar运行jar包中的类:java -classpath pra.jar pra.HelloW

2、orld 或者java -cp pra.jar pra.HelloWorld在介绍PLSQL中嵌入JAVA程序编译输出HelloWorld之前,对钟爱于JAVA的码农们说句话:JAVA的魅力依旧是ORACLE取代不了的1.下面是个简单的PLSQL程序嵌入JAVA类并编译输出的代码。CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED HELLOWORLD ASpublic class HelloWorld public static String entry() return Hello World!; CREATE OR REPLACE FUNCTI

3、ON FU_HELLOWORLD RETURN VARCHAR2AS LANGUAGE JAVANAME HelloWorld.entry() return java.lang.StringSELECT FU_HELLOWORLD FROM DUAL;2.PLSQL对数据的强大处理功能是毋庸置疑的,但在应用级别还是有居多限制,不过ORACLE官方提供了许多功能还不错的内置包。现在先来介绍下后续功能的核心包UTL_FILE,ORACLE提供的内置包,包含多种过程及方法,可以实现目录(DIRECTORY ORACLE不能访问操作系统级的文件夹,需要创建特定目录才能够访问)下的文件读取写入,具体实现

4、加密,无从了解其实现原理,其应用可以与JAVA中的基本流比照。其功能有极大限制,但是可以实现基本的文件读取写入等操作。前段时间写了个东东,代码如下,GGMM们可以瞧下,消遣下。-创建配置表DECLARE -action:创建存储目录文件表 -author:hehe -date:2014-01-23 V_COUNT NUMBER(2); V_SQL VARCHAR2(32767);BEGIN -判断表存在 SELECT COUNT(*) INTO V_COUNT FROM USER_TABLES WHERE TABLE_NAME=T_DIRLIST IF V_COUNT=1 THEN -如果存在

5、DROP掉 EXECUTE IMMEDIATE DROP TABLE T_DIRLIST END IF; -如果不存在,重新创建 V_SQL:=CREATE TABLE T_DIRLIST(FILENAME VARCHAR2(255),FILESIZE NUMBER,FILEDATE DATE) EXECUTE IMMEDIATE V_SQL;COMMENT ON TABLE T_DIRLIST IS 存储目录文件表COMMENT ON COLUMN T_DIRLIST.FILENAME IS 文件名称 T_DIRLIST.FILESIZE IS文件大小文件最后操作时间 -创建序列 SELEC

6、T COUNT(*) INTO V_COUNT FROM USER_SEQUENCES WHERE SEQUENCE_NAME=SEQ IF V_COUNT=0 THENCREATE SEQUENCE SEQ START WITH 1END;/-创建java类用于文件夹操作create or replace and compile java source named dirlist asimport java.io.*;import java.sql.*;public class DirList action:获取目录下文件 author: date:public static void ge

7、tList(String directory) throws SQLException /创建文件对象 File path=new File(directory); String fileList=path.list(); String fileName; long fileSize; long fileDate; /清除表中的所有记录 #sqldelete from t_dirlist; #sqlcommit; /循环取出获取目录中的文件名及创建时间 for (int i=0;ifileList.length; i+) fileName=fileList; File fpath=new Fi

8、le(directory+/+fileName); /获取对象大小 fileSize=fpath.length(); /获取对象的最后修改时间 fileDate=fpath.lastModified(); /向表中插入记录 #sqlinsert into t_dirlist(filename, filesize, filedate) values(:fileName,:fileSize,to_date(01/01/1970,mm/dd/yyyy)+:fileDate/(24*60*60*1000); /提交事务-具体实现包CREATE OR REPLACE PACKAGE PA_FILEAS

9、PROCEDURE PR_GETDIRLIST(I_DIRECTORY VARCHAR2);获取目录下的所有文件 /*参数说明 *I_DIRECTORY 目录名称 */ PROCEDURE PR_READTOWRITE_FILE(I_READ_DIR VARCHAR2, I_WRITE_DIR I_WRITE_FILE VARCHAR2);读取I_READ_DIR 目录下的所有文件,到I_WRITE_DIR目录下的对应文件 *I_READ_DIR 读取文件的目录 *I_WRITE_DIR 写入文件的目录 *I_WRITE_FILE 写入的文件名 PROCEDURE PR_READTOWRITE

10、_DECLARE(I_READ_DIR I_READ_FILE VARCHAR2 DEFAULT DECLARE.SQL,读取I_READ_DIR 目录下的I_READ_FILE文件,到I_WRITE_DIR目录下的对应文件 *I_READ_FILE 读取的文件名END PA_FILE;CREATE OR REPLACE PACKAGE BODY PA_FILE PROCEDURE PR_GETDIRLIST(I_DIRECTORY IN VARCHAR2) AS LANGUAGE JAVA NAME DirList.getList(java.lang.String) I_WRITE_FILE

11、 VARCHAR2) AS V_READ_DIR VARCHAR2(1000) :=TRIM(UPPER(I_READ_DIR); V_WRITE_DIR=TRIM(UPPER(I_WRITE_DIR); V_WRITE_FILE=TRIM(UPPER(I_WRITE_FILE); V_OWNER VARCHAR2(38)=SYS_CONTEXT(USERENVCURRENT_USER V_DIR V_FILE_WRITE UTL_FILE.FILE_TYPE; V_FILE_READ V_BUFFER V_FILENAME V_GOL V_CUR SYS_REFCURSOR; CURSOR

12、CUR_FILENAME IS SELECT FILENAME FROM T_DIRLIST WHERE FILENAME AND SUBSTR(TRIM(UPPER(FILENAME),INSTR(TRIM(FILENAME),.)=.SQL ORDER BY FILENAME; BEGIN -获取读取文件的目录下的所有文件 -授予java访问目录权限SELECT DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME IN( |V_READ_DIR|V_WRITE_DIR|) OPEN V_CUR FOR V_SQL; FETCH

13、V_CUR INTO V_DIR; WHILE V_CUR%FOUND LOOPCALL dbms_java.grant_permission(|V_OWNER| |SYS:java.io.FilePermission |V_DIR|, read -DBMS_OUTPUT.put_line(V_SQL);CALL dbms_java.grant_permission(* END LOOP; SELECT DIRECTORY_PATH INTO V_DIR FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME=V_READ_DIR; PR_GETDIRLIST(V_

14、DIR); -首次清除所有记录 V_FILE_WRITE :=UTL_FILE.FOPEN(V_WRITE_DIR,V_WRITE_FILE,W-W覆盖写入 -写入空 UTL_FILE.PUT_LINE(V_FILE_WRITE, UTL_FILE.FFLUSH(V_FILE_WRITE); UTL_FILE.FCLOSE(V_FILE_WRITE); - -打开要写入的文件A-A 追加 -循环读取文件下的文件 FOR CUR_GET_FILENAME IN CUR_FILENAME -获取文件名 V_FILENAME:=TRIM(CUR_GET_FILENAME.FILENAME); -写入

15、空行 -写入注释 V_GOL:SET ECHO ON; UTL_FILE.PUT_LINE(V_FILE_WRITE,V_GOL);REM 创建|SUBSTR(V_FILENAME,1,INSTR(V_FILENAME,)-1);SET ECHO OFF; -打开文件 V_FILE_READ:=UTL_FILE.FOPEN(V_READ_DIR,V_FILENAME,R -读取文件 UTL_FILE.GET_LINE(V_FILE_READ,V_BUFFER); -写入文件 UTL_FILE.PUT_LINE(V_FILE_WRITE,V_BUFFER); EXCEPTION WHEN NO_DATA_FOUND THEN EXIT; END; -冲刷写入系统文件 UTL_FILE.FCLOSE(V_FILE_READ); -全部重新刷新输出释放 -异常处理,读取不到数据时,关闭流 WHEN OTHERS THEN RAISE; END PR_READTOWRITE_FILE; V_READ_FILE=TRIM(I_READ_FILE);=TRIM(I_WRITE_FILE); V_SEQ NUMBER(38); V_FILE_W

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1