Oracle8i中使用Java语言来开发存储过程

2019-03-22 17:03

Oracle8i中使用Java语言来开发存储过程

在Oracle8i之前,开发人员只能使用PL/SQL来开发存储过程。而在Oracle8i之中,不仅可以使用原有的PL/SQL开发存储过程,而且也可以使用Java语言来开发存储过程。本篇文章将简单介绍关于这方面的知识,包括以下内容:

? ? ? ? ? ? ? ? ? 存储过程简介; Java存储过程

Java存储过程的开发步骤 使用Java开发过程; 使用Java开发函数; 使用Java开发包; 使用Java开发触发器; 使用Java开发对象方法; 使用JDeveloper开发JSP。

存储过程简介

存储过程是存储在数据库中的一段存储程序。当创建存储过程时,系统会对其进行编译,并将执行代码存储到数据库中。 ? 设计存储过程的方针

? ?

在定义存储过程时,要使用其完成单一、相对集中的任务。

在定义存储过程时,不要定义已经由其它特征所提供功能的过程。例如,不要定义强制数据完整性的过程(使用完整性约束)。

2. 存储过程的优点 1) 安全性

当创建了存储过程之后,可以将执行该过程的权限授予其它用户,从而使得他可以执行特定的数据库操作,而不能访问其它模式对象(例如表)。例如,你可以将执行过程(更新表)的权限授予其它用户,但不授予它们直接访问该表的权限。 2) 性能

? ?

存储过程只被发送到数据库一次,相对于SQL语句或PL/SQL块而言,其网络通信量更小。

当调用存储过程时,数据库会直接运行该存储过程,无需进行编译。相对于SQL语句或PL/SQL块而言,其执行速度更快。

3) 内存分配

存储过程充分利用了Oracle共享内存的能力。在将存储过程装载到内存中后,多个用户可以同时调用该存储过程,从而降低了应用对Oracle的实际内存需求。 4) 生产力

存储过程提高了开发生产力。通过将公共集合编写为存储过程,避免了冗余代码,从而提高了开发生产力。例如,我们可以编写用于插入、更新、删除AUTHS表的过程,此后应用可以直接调用这些过程,而无需重写SQL语句。当管理数据的方法发生变化时,只需要修改过程,而不需要对应用进行任何修改。

Java存储过程

在以前的Oracle版本中,开发存储过程是通过PL/SQL来完成的。而在Oracle8i版本中,我们不仅可以使用PL/SQL开发存储过程,而且还可以使用Java语言来开发存储过程。

1. PL/SQL与Java存储过程比较

与PL/SQL相比,使用Java语言开发存储过程有以下优点:

? ?

Java语言具有更强大的运算能力,提供了更多的运算方法。当要完成进行复杂运算的存储过程时,使用JSP将是你最好的选择。

PL/SQL只能用于Oracle数据库,而Java语言可以应用于更多的数据库系统(如Sybase、DB2、Informix等等),所以Java存储过程将具有更好的兼容性、可移植性。

2. JSP分类

Java存储过程包括过程、函数、触发器以及对象方法四种类型。 3. 调用JSP的四种方法

? ? ? ? CALL语法; DML语句;

PL/SQL块、子程序、包; 由触发器隐含调用。

Java存储过程的开发步骤

1. 编写Java源代码

当开发Java存储过程时,首先应该编写Java源代码。如下图所示:

注意事项:

? ? 当以public方式声明类时,类名必须与其文件名完全一致。 只有public static方法可以作为Java存储过程。

2. 装载Java代码及类到Oracle8i数据库中

在编写了Java源代码之后,接下来应该将Java代码及相应的Java类装载到Oracle8i数据库中。如下图所示:

装载Java代码及类到RDBMS有以下两种方法:

? ? 使用loadjava工具,通过该工具可以快速装载Java源代码(.java)、Java二进制代码(.class)以及Java打包文件(.jar)。

使用CREATE Java、ALTER Java装载Java代码。

其中,前一种方法相对简单,并且我们推荐你使用这种方法。 3. 生成调用说明

在装载了Java类之后,接下来应该生成对public static方法的调用说明,最终完成Java存储过程的开发工作。如下图所示:

完成上述步骤之后,就完成了Java存储过程的开发工作,然后就可以调用并执行该Java存储过程了。

使用Java开发过程

过程用于执行某种操作。需要注意的是,过程所对应的Java方法返回值必须为空(void)。本节以创建用于插入、修改和删除AUTHS表的JSP为例,说明使用Java开发过程的方法。如下图所示:

下面讲述完成上述任务的方法及过程: 1. 编写Java源代码

程序清单如下(manipulate_auths.java): /* 导入Java类 */ import java.sql.*; import java.io.*;

import oracle.jdbc.driver.*; /* 主类 */

public class manipulate_auths { public static void insert_auths

(String code,String name,int sex,String birthdate,String entry_date_time) throws SQLException { /* 建立到数据库的缺省连接 */

Connection conn = new OracleDriver().defaultConnection(); /* 构造动态SQL语句 */

String sql = \

(author_code,name,sex,birthdate,entry_date_time) \\

/* 使用try ... catch语句抓取并抛出例外 */ try {

/* 准备动态SQL语句 */

PreparedStatement pstmt = conn.prepareStatement(sql); /* 设置动态SQL参数值 */ pstmt.setString(1, code); pstmt.setString(2, name); pstmt.setInt(3, sex);

pstmt.setString(4, birthdate); pstmt.setString(5, entry_date_time); /* 执行动态SQL语句 */ pstmt.executeUpdate(); /* 关闭动态SQL语句 */ pstmt.close();

} catch (SQLException e) { } }

public static void delete_auths (String code) throws SQLException { /* 建立到数据库的缺省连接 */

Connection conn = new OracleDriver().defaultConnection(); /* 构造动态SQL语句 */

String sql = \/* 使用try ... catch语句抓取并抛出例外 */ try {

/* 准备动态SQL语句 */

PreparedStatement pstmt = conn.prepareStatement(sql); /* 设置动态SQL参数值 */ pstmt.setString(1, code); /* 执行动态SQL语句 */ pstmt.executeUpdate(); /* 关闭动态SQL语句 */ pstmt.close();

} catch (SQLException e) { } }

public static void modify_salary (String code,float salary)


Oracle8i中使用Java语言来开发存储过程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:粘土矿物分析在储层潜在敏感性评价中的应用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: