利用Java编写Oracle存储过程

Oracle里可以使用多种语言来编写存储过程,比如Pro*C/C++,PL/SQL,COBOL,在Oracle8i开始支持用Java编写存储过程。
如果非要写存储过程的话,做为以Java谋生的我,首选用Java编写,用PL/SQL需要记忆很多的语法(Pascal类的语法)和函数,远不如使用Java/JDBC这么轻车熟路。
而且,DB2等数据库都支持Java存储过程,所以不比为每一种数据学习一种编写存储过程的方法了。

Java存储过程与一般的JDBC程序有所不同的是: 
1.有安全限制,毕竟是在oracle内部运行的,不允许访问操作系统的资源,如文件。 
2.获取数据库联接方式,connection = new OracleDriver().defaultConnection(); 
3.System.out,System.err,System.in等输入输出有所不同。可以利用某些命令重定向。

下面用Java 存储过程写一个Hello World的例子:

--1.在plsqldeveloper里,java source里增加一个TestJava1类 
Java代码 
create or replace and compile java source named TestJava1 as   
public class TestJava1   
{   
  public static void test()   
  {   
   System.out.println("Hello");   
  }   
}  

create or replace and compile java source named TestJava1 as
public class TestJava1
{
  public static void test()
  {
   System.out.println("Hello");
  }
}
执行它,以保存并编译。 

--2.增加一个procedure,执行如下命令: 
Java代码 
create or replace procedure testJava1 as language java name 'TestJava1.test()';  

create or replace procedure testJava1 as language java name 'TestJava1.test()';

--3.在command window里输入: 
Java代码 
SET SERVEROUTPUT ON;   
CALL dbms_java.set_output(2000);  

SET SERVEROUTPUT ON;
CALL dbms_java.set_output(2000);
以使System.out重定向到当前窗口; 
在command window里输入,exec testJava1(); 
即可看到结果: 

Hello 

PL/SQL procedure successfully completed 

 

posted @ 2017-10-29 12:11  碧水幽幽泉  阅读(3791)  评论(0编辑  收藏  举报