📄 13.html
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="description" content="Java,JDBC,EJB,Open Source,jdk,rmi">
<meta name="Keywords"
content="Java, servlets, Java servlet, Javascript, ActiveX, VRML,
applet, applets, directory, news, jdbc, applications,
Java applications, Java developer, Java development, developer,
classes, Jars.com, Jars, intranet, Java applet, Javabeans,
Java products, JDK, Java development kit, java development environment, JIT,
JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources,
SUN, CGI, Perl, database, network, html,
xml, dhtml, rating, ratings, review, jars, cgi, programming,
software review, software rating">
<title>csdn_用PL/SQL和Java开发Oracle8 i应用程序</title>
<style>
.news { BACKGROUND: #007cd3; font-family: "宋体"; font-size: 9pt }
.t { font-family: "宋体"; font-size: 9pt }
.t1 { color:#007cd3; font-family: "宋体"; font-size: 9pt }
.white { font-family: "宋体"; font-size: 9pt;color:#FFFFFF }
.red { font-family: "宋体"; font-size: 9pt;color:#FF0000 }
A:visited {color:#0000FF}
A:hover {color: #ff6666; text-decoration: none}
.text {font-size: 12px; line-height: 160%; font-family: "宋体"}
.text1 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text1:visited {color:#000000}
.text1:hover {color: #000000}
.text2 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text2:visited {color:#000000}
.text2:hover {color: #000000}
.text3 {font-size: 12px; line-height: 100%; font-family: "宋体"; text-decoration: none}
.large {font-size: 14.8px; line-height: 130%}
</style>
</head>
<body
<center>
<tr>
<td WIDTH="100%" VALIGN="TOP">
<tr>
<td WIDTH="100%" CLASS="white"></td>
</tr>
<tr>
<td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>用PL/SQL和Java开发Oracle8 i应用程序 </td>
<p> <td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>作者: 翻译:张猛
</td></p>
</tr>
<tr> <td WIDTH="100%" bordercolor="#FFFFFF" CLASS="t" bgcolor="#F0F0F0" colspan="2">
<H1 class=b2a><FONT
size=+2>用PL/SQL和JAVA建立应用程序</FONT></H1>
<P>开始,我们首先看一下拥有PL/SQL应用程序的客户的场景:客户们想在服务器里增加新的Java代码,从而扩充原有的PL/SQL应用程序。有三个特别的问题需要考虑:第一,Oracle8<I>i</I>里支持的主要存储过程类型是什么,可以用什么途径调用它们;第二,Java在Oracle8<I>i</I>里如何工作,Java如何同PL/SQL互操作;第三,Oracle<I>8i
</I>服务器如何处理PL/SQL和Java之间的名称解析。在整个白皮书里,
“Java”这个单词,既指标准的Java,也指SQLJ
(Java里的嵌入SQL),只有在明确地表明讨论不同概念时,才表示不同的意思。</P>
<H2 class=b2a><FONT size=+1>Oracle8i中存储过程的类型</FONT></H2>
<P>Oracle8<I>i</I>支持的存储过程类型有几种?Oracle<I>8i
</I>支持四种不同类型的存储过程——用PL/SQL或Java,都可以实现全部四种类型的存储过程。这四种存储过程类型是:</P>
<P><I>存储过程</I><B>——</B>顶级存储过程允许客户用任意商业逻辑扩展SQL。客户用名称调用存储过程,可以在SQL、PL/SQL包、以及“顶级”位置上调用存储过程。</P>
<P><I>存储函数</I><B>——</B>存储函数实质上与存储过程相同,不同之处在于存储函数向调用者返回值。可以用名称调用存储函数,也可以在SQL、PL/SQL包、以及“顶级”位置上调用存储函数。</P>
<P><I>数据库触发器</I><B>——</B>触发器是与特定的表和视图关联的商业规则,修改对表或视图时,SQL自动调用触发器。Oracle<I>8i
</I>提供了几种类型的触发器:在SQLDML语句执行之前或之后激发的触发器;在每一行更新之前或之后激发的触发器;事件触发器(例如:登录、退出、DDL语句、数据库启动或关闭等的触发器);替代(instead-of)触发器。所有这些触发器类型,都可以用PL/SQL或Java编写。</P>
<P><I>对象类型方法</I>—— Oracle8 ™
发行版8.0和Oracle<I>8i</I>提供了用SQL定义复合数据类型的能力。这些对象类型的方法,可以用Java实现,也可用PL/SQL实现。例如,可以用SQL定义一个订单对象类型purchase_order_t,如下所示:</P><PRE align="left"><FONT color=#000066 face="Courier New, Courier, mono" size=2>CREATE TYPE purchase_order_t AS OBJECT (
pono NUMBER,
custref REF customer_info_t,
orderdate DATE,
shipdate DATE,
line_item_list line_item_list_t,
shiptoaddr address_t,
MEMBER FUNCTION
total_value RETURN NUMBER,
) ;</FONT></PRE>
<P>然后实现这个对象类型的方法 …</P><PRE align="left"><FONT color=#000066 face="Courier New, Courier, mono" size=2>CREATE OR REPLACE TYPE BODY purchase_order_t AS
MEMBER FUNCTION total_value RETURN NUMBER IS
i INTEGER;
stock stock_info_t;
line_item line_item_t;
total NUMBER := 0;
cost NUMBER;
BEGIN
// 在这里插入具体的PL/SQL代码或者译Java存储过程的调用。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -