使用sqlj编写存储过程--

使用sqlj编写存储过程--

ID:20532115

大小:80.00 KB

页数:8页

时间:2018-10-12

使用sqlj编写存储过程--_第1页
使用sqlj编写存储过程--_第2页
使用sqlj编写存储过程--_第3页
使用sqlj编写存储过程--_第4页
使用sqlj编写存储过程--_第5页
资源描述:

《使用sqlj编写存储过程--》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、使用SQLJ编写存储过程>>  1.编写一个SQLJ存储过程  2.把它装载进一个Oracle数据库  3.在数据库中发布Java方法  4.运行过程  5.和PL/SQL相对应的过程比较结果  PL/SQL存储过程  DeleteClassification过程主要使用两个表工作,ValidTransaction(父表)和Classification(子表),是一种使用TransactionId外键的一到多的关系。存储过程的目的就是删除所有指定的时期/月份的ValidTransaction的Classification纪录。ValidTransac

2、tion表中的TransactionDate字段选择这个日期范围之内的记录。  在例子中,ValidTransaction包含12个时期的数据,共有一百二十万行。在ValidTransaction表中的每一行,Classification表分别有10行与之对应,所以就共有一千二百万行数据。清除一个指定月份的Classification数据意味着从Classification表中删除1百万行数据。  DeleteClassification过程的代码使用了一些Oracle8iPL/SQL中的新的特性,象BULKBINDS和BULKCOLLECT,用来改

3、善事务的执行性能并增加你在事务中可交付的数据数量,从而减少事务的数目并且降低发生ORA-01555错误的可能性。BULKCOLLECT子句能使整个TransactToReset游标一步就被取出到v_TransactionIdPL/SQL表中。然后游标立即被关闭以避免交叉获取错误,这样也同样减少ORA-01555错误的发生。  最后,这个过程计算删除行数的百分比。如果结果超过了限度,主关键字索引可能就会被损坏而且你还可能要重建它。  代码段1 演示了DeleteClassification存储过程的PL/SQL版本。  创建SQLJ存储过程将要编写服务

4、器端SQLJ代码,另外将在一台客户机上执行编译过程。这个途径提供翻译SQLJ代码的最大灵活性--选项设置和错误处理在客户机上比在服务器上更方便。  开发一个SQLJ存储过程由五个步骤组成:  1.使用Java类的静态方法创建一个SQLJ源文件,后面将要把这个源文件通过SQL封装器与PL/SQL环境合并起来。  2.把这个SQLJ源文件编译成一个Java类或者一组Java类。把所有的类合并成一个.jar文件。  3.使用loadjava实用程序把这个.jar文件装载入Oracle数据库服务器。确定装载过程是成功的,为每个Java类都创建一个JavaCl

5、ass类型的模式对象。  4.为存储的Java过程/函数创建一个PL/SQL封装器。  5.通过从SQL*Plus或者PL/SQL上调用存储的Java过程来测试这些过程。  第一步:创建SQLJ源文件  使用import语句启动PipelineReset.sqlj文件。只导入你计划在你的类中使用的Java类和程序包。importjava.sql.SQLException;  importjava.sql.Timestamp;  importjava.util.ArrayList;  importjava.util.Iterator;  SQLJ运行时

6、刻程序包可在JServerJava虚拟机(JVM)中找到。还有,你不必编写创建到数据库的连接的代码了,因为JServer本身带有到数据库服务器的隐含的连接。由于你将在客户机上编译源代码,所以必须包括下列三个import语句:importoracle.jdbc.driver.OracleConnection;  importsqlj.runtime.ref.DefaultContext;  importsqlj.runtime.ExecutionContext;  接下来,需要声明迭代程序类。在迭代程序类声明中定义了SQLJ为你构造的Java类。你必须

7、把SQLJ迭代程序声明和连接上下文说明放在你的SQLJ源文件里的Java类的顶端,紧接着import语句之后。下列三个迭代程序声明提供PL/SQL版的三个游标函数:#sqliteratorStartEndDate  (TimestampstartDate,TimestampendDate);  #sqliteratorValidTransactions  (LongtransactionId);  #sqliteratorClassificationCount  (long);  使用下面三个参数定义PipelineReset.java类的静态Del

8、eteClassification方法:publicclassPipelineReset{  publics

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。