用PLSQL和Java开发Oracle8i应用程序

用PLSQL和Java开发Oracle8i应用程序,第1张

用PLSQL和Java开发Oracle8i应用程序,第2张

用PL/SQL和Java开发Oracle8 i应用程序

随着Oracle8i的发布,Oracle在数据库中支持两种主要的编程语言??PL/SQL和Java。今天,Oracle的许多客户同时使用PL/SQL和Java来构建数据库应用程序。既然有两种数据库编程语言,自然就有一个问题:在构建Oracle8i应用程序时,PL/SQL和Java哪个更好?

让我们快速回顾一下PL/SQL为Oracle数据库开发人员提供的强大功能,包括高性能、易用性、与SQL的无缝集成以及健壮性。现在,PL/SQL仍然是开发数据库应用程序的成熟过程化语言,是建立SQL密集型和数据密集型应用程序的理想语言。随着Oracle8i的推出,Oracle将Java引入数据库,为这种流行的通用语言提供了强大的大规模平台。

Enterprise JavaBean和CORBA可以用来在Java中开发多层的和面向组件的应用程序。还可以使用Java开发传统的数据库存储过程。Oracle8i提供了很多特性,可以简化用PL/SQL和Java构建应用程序的过程,可以很容易地将两种语言编写的应用程序结合起来。

本白皮书提供了Oracle8i中PL/SQL和Java特性的技术概述,并提供了如何使用它们来构建应用程序的实用指南。白皮书分为四个部分:由于很多Oracle客户都有现有的PL/SQL应用程序,我们先描述如何将现有的PL/SQL程序与Java结合起来扩展现有的PL/SQL程序;然后,我们描述这两种语言的通用应用程序编程特性,并解释如何一起使用PL/SQL和Java。第三部分描述了如何使用PL/SQL和Java构建应用(比如什么时候使用PL/SQL最合适,什么时候使用Java最合适);最后,我们讨论一些真实的例子来展示Oracle客户如何在Oracle8i中使用PL/SQL和Java。

用PL/SQL和JAVA创建应用程序

首先,我们来看一下拥有PL/SQL应用程序的客户的场景:客户希望向服务器添加新的Java代码,从而扩展原有的PL/SQL应用程序。有三个特殊的问题需要考虑:第一,Oracle8i支持的主要存储过程类型有哪些,可以用什么通道来调用它们;其次,Java在Oracle8i中如何工作,Java如何与PL/SQL互操作;第三,Oracle8i server如何处理PL/SQL和Java之间的名称解析?在整个白皮书中,“Java”一词既指标准Java,也指SQLJ(Java中的嵌入式SQL),只有明确说明讨论不同的概念时,才表示不同的含义。

Oracle8i中存储过程的类型

Oracle8i支持多少类型的存储过程?Oracle8i支持四种不同类型的存储过程??所有四种类型的存储过程都可以用PL/SQL或Java实现。四种类型的存储过程是:

存储过程??存储过程允许客户用任何业务逻辑扩展SQL。用客户名称调用存储过程。可以调用SQL、PL/SQL包和" " location中的存储过程。

存储功能??存储函数本质上与存储过程相同,只是它向调用方返回值。可以按名称调用存储函数,也可以在SQL、PL/SQL包和" "位置调用存储函数。

数据库触发器??触发器是与特定表和视图相关联的业务规则。当表或视图被修改时,SQL自动调用触发器。Oracle8i提供了几种类型的触发器:在执行SQLDML语句之前或之后触发的触发器;每次行更新之前或之后触发的触发器;触发器(例如,登录、注销、DDL语句、数据库启动或关闭等的触发器。);而不是触发器。所有这些触发器类型都可以用PL/SQL或Java编写。

对象类型方法??Oracle8 & # 84828.0版和Oracle8i提供了在SQL中定义复合数据类型的能力。这些对象类型的方法可以用Java或PL/SQL实现。例如,您可以使用SQL定义订单对象类型purchase_order_t,如下所示:

创建类型purchase_order_t作为对象(
pono编号,
custref customer _ info _ t,
orderdate日期,
shipdate日期,
line _ item _ list line _ item _ list _ t,
shiptoaddr addr address _ t,
成员函数
total_value返回编号,
);
那么实现这个对象类型的方法…

创建或替换类型BODY purchase_order_t AS
成员函数total_value返回的数字是
i整数;
股票stock _ info _ t;
line _ item line _ item _ t;
总数:= 0;
成本编号;
BEGIN
//在此插入具体的PL/SQL代码或者翻译Java存储过程的调用。
END;
在Oracle 8i中,这四种存储程序类型都可以从不同的调用环境中调用。这些呼叫环境是:

SQL语句??您可以在任何SQL语句中调用函数。

叫语法??使用CALL语句调用过程和函数。CALL是Oracle8i中引入的新语法。

PL/SQL块,子程序,包??您可以在PL/SQL子程序、包或匿名块中调用它们。请注意:Java存储程序本身可以在匿名BEGIN … END块中被调用。

触发器的隐式调用??最后,在执行触发器时,可以隐式调用PL/SQL或Java存储过程。

将Java与现有的PL/SQL程序结合起来
要了解如何将Java应用程序与现有的PL/SQL存储过程结合起来,首先要了解开发JAVA存储过程的三个步骤:

第一步:写一个Java存储过程:第一步,写一个Java程序做存储过程。可以用标准Java或者SQLJ写吗?因为存储过程通常是SQL密集型的,所以用SQLJ编写存储过程是一种高效的方法。

public class Foo {
public static String prepend Hello(String tail){
return " Hello "+tail;}}
第二步:规划并发布存储过程:用Java开发工具写好Java程序后,加载到Oracle8i中。使用Oracle提供的loadjava命令行工具,将java程序以源文件、二进制文件、.类文件和Java。jar归档文件。Java是一个Java程序,用Oracle JDBC驱动程序连接到服务器,自动加载一组Java程序到服务器。(也可以使用工具CREATE JAVA,这是SQL*Plus的SQLDDL命令)

> load Java-user scott/tiger @ oudelsrv-1:5521:orcl foo . class
命令执行后,类foo方法将被加载到Scott的大纲中(命名空)之间的解析请参考后面Java、SQL和PL/SQL名称的内容。下一步是在SQL上注册该方法。为什么这一步是必要的?如果只使用PL/SQL,就不需要在SQL上显式注册PL/SQL过程?对于SQL,每个PL/SQL过程都是自动可见的。相反,使用Java时,所有Java方法对SQL都是不可见的?为了让Java方法作为存储过程在SQL中被调用,它必须被显式地“发布”到SQL中。Java类和方法不会自动发布到数据字典SQL和PL/SQL,原因有两个:

Java应用程序中的大多数方法通常被其他Java程序调用;而且,Java到Java的调用发生在Java虚拟机环境中,不需要向SQL公开。
SQL编译器需要关于如何将参数从SQL数据类型映射到Java数据类型的指导,它还需要关于正确重载调用以给出与原始实际参数值相对应的SQL数据类型的信息。这需要开发者的介入,所以在SQL和PL/SQL中只需要调用一些Java方法。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 用PLSQL和Java开发Oracle8i应用程序

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情