HLSHLS/MD1201578646842154CompanyConfidential–ForBDLL&HANDuseonly0ORACLE探究_JAVA存储过程_开发指引文档作者:曾天文创建日期:2011-11-02更新日期:2014-11-01控制编码:当前版本:1.0HLSHLS/MD1201578646842154CompanyConfidential–ForBDLL&HANDuseonly1文档控制1.1.更改记录日期作者版本更改参考2011-11-02曾天文1.0无前版本2014-11-01曾天文2.01.2.审阅记录姓名职位签字1.3.分发人员编码姓名地点和位置签名1234HLSHLS/MD1201578646842154CompanyConfidential–ForBDLL&HANDuseonly2目录文档控制...................................................................................................................................11.1.更改记录..................................................................................................................11.2.审阅记录..................................................................................................................11.3.分发人员..................................................................................................................11.Java存储过程.........................................................................................................................31.1总体说明.....................................................................................................................31.2必要设置.....................................................................................................................31.3开发步骤.....................................................................................................................41.4JDBC与JAVA存储过程..............................................................................................51.5返回PLSQL集合变量.................................................................................................71.6发布程序工具-LoadJava.............................................................................................92.开发实例..............................................................................................................................132.1实例说明...................................................................................................................132.2创建JAVA程序.........................................................................................................152.3发布程序...................................................................................................................19已解决及未解决的问题.........................................................................................................25未解决的问题..................................................................................................................25已解决的问题..................................................................................................................25HLSHLS/MD1201578646842154CompanyConfidential–ForBDLL&HANDuseonly31.Java存储过程1.1总体说明简述JAVA存储过程是以JAVA语言编写的在数据库服务器JVM上运行的JAVA程序,调用使用方式与PL/SQL存储过程类同。利用Java存储过程沟通SQL、XML、Java、J2EE和Web服务。本文将介绍Oracle如何在数据库内启用基于Java的存储过程。还会介绍Java存储过程如何访问数据,以及如何创建基本Java存储过程,实现异构数据库之间的数据互访。ORACLEJVM任何JAVA应用程序的运行,都脱离不了JVM。自Oracle8i版本1(Oralce8.1.5)开始,Oracle便提供紧密集成的Java虚拟机(JVM),JVM支持Oralce的数据库会话期结构,这使得在数据库内运行JAVA程序具有实际意义.Oracle9i和10g版本的数据库为开发服务器端或内部Java程序组件提供了一个健壮的体系结构。它包括:1)操作系统的平台依赖性,例如UNIX、LINUX、MicrosoftWindows;2)依赖Oracle数据库的文件和库管理;3)独立于平台的JVM(JavaVirtualMachine,OracleJava虚拟机);4)Java内核类库,兼容不同的平台;5)Oracle支持的JavaAPI(ApplicationProgrammingInterfaces,应用程序接口),如SQLJ、JDBC和JNDI;6)Oracle的PL/SQL存储对象,为SQL和PL/SQL程序之间提供接口,就像服务器端Java类库一样。JAVA程序的运行需要JVM,而各种复杂程序的开发则需要各种丰富的JAVAAPI,数据库提供了基本的扩展API,如ORACELJDBC;若要实现特定功能则组要装载特定JAR或者JAVA开源程序进入ORACLEDB.如本文实例的需要访问MSSQLSERVER数据库,此种情况则需要装载MicroSOFT官网上SQLSERVERJDBC程序JAR包。1.2必要设置对于JAVAPROCEDURE的开发主要前提是ORACLEDB必须安装ORACLEJVM,一般情况下属于必须安装选项;1.检查OracleJVM以下查询产品安装情况HLSHLS/MD1201578646842154CompanyConfidential–ForBDLL&HANDuseonly4selectcomp_name,version,statusfromdba_registry;2.OracleJVM配置1)JAVA内存设置:必须设置ORACLEDB的JAVA内存参数JAVA_POOL_SIZE=20MSHARED_POOL_SIZE=50M3.装载必要的外部JAR开发JAVA存储过程实质为开发JAVA程序,除JDK包外,在实际开发过程中需要使用LOADJAVA程序附加特定的外部JAR;1.3开发步骤此节使用源码引自章节:OracleDatabaseJavaDeveloper’sGuide-JavaStoredProceduresApplicationExample1.创建JAVA应用程序可以使用IDE开发工具进行JAVA程序编写,如JDeveloper;开发的最终调用的JAVA方法必须为static类型方法.如publicstaticvoidaddStockItem(intstockNo,Stringdescription,HLSHLS/MD1201578646842154CompanyConfidential–ForBDLL&HANDuseonly5floatprice)throwsSQLException{Stringsql=INSERTINTOStockItemsVALUES(?,?,?);try{Connectionconn=DriverManager.getConnection(jdbc:default:connection:);PreparedStatementpstmt=conn.prepareStatement(sql);pstmt.setInt(1,stockNo);pstmt.setString(2,description);pstmt.setFloat(3,price);pstmt.executeUpdate();pstmt.close();}catch(SQLExceptione){System.err.println(e.getMessage());}}2.发布Java程序到Oracle完成的JAVA程序,要使之能在数据库运行,可以打包成JAR或者单纯的CLASS程序,通过LOADJAVA命令装载到ORACELDB,或者以CREATEJAVA语句创建;如:loadjava-uscott@myPC:1521:orcl-v-r-tPOManager.class注:发布JAVA代码到数据库,Jdeveloper有提供相关的功能可已直接将代码发布到ORACLEDB.3.PL/SQL”封装(wrappers)”JAVAORACLEDB中需要调用装载的JAVA程序,需用PL/SQL封装成存储过程形势;应用1步的JAVA例子PROCEDUREadd_stock_item(stock_noNUMBER,descriptionVARCHAR2,priceNUMBER)ASLANGUAGEJAVANAME'pomanager.POManager.addStockItem(int,java.lang.String,float)';编译之后将于普通PL/SQL存储过程使用方式相同。1.4JDBC与JAVA存储过程JAVA存储过程一大作用就在于异构数据库系统间的数据集成,JDBC与JAVA存储过程的结合使用将此需