用Java编写Oracle存储过程和函数

可以在PL/SQL Devlelop环境中写

用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 source写一个存储过程和函数的例子。

1.在plsqldeveloper里,java source里增加一个MyTest类,

代码:

create or replace and compile java source named test as

 

public class MyTest

{

// 创建存储过程的java源代码

(执行时请将注释删除,这里本人试过所有的注释了,都不行,还没弄明白为什么不能用注释)

public static void myProc(int a,int b,int[] ret){

ret[0]=a+b;

}

// 創建函數的java源代碼(执行时请将注释删除)

public static int myFunc(int a,int b){

return a+b;

}

}

/

 

F8执行它,以保存并编译。

 

2)增加一个procedure和函数,执行如下命令:

 

代码:

 

'创建存储过程

CREATE OR REPLACE PROCEDURE myProc(a in number, b in number, ret out number) AS

LANGUAGE java NAME 'MyTest.myProc(int,int,int[])'; '注意MyTest.myProc是我们编写的java source的类名和方法名

/

'创建函数

CREATE OR REPLACE FUNCTION myFunc(a in number, b in number) RETURN NUMBER IS

LANGUAGE java NAME 'MyTest.myFunc(int,int) return int';

/

 

F8执行它,以保存并编译。

 

3)使用测试

 

‘测试存储过程用到的测试代码

set serveroutput on

DECLARE a INTEGER;

BEGIN

myProc(1, 2, a);

DBMS_OUTPUT.PUT_LINE(a);

END;

/

‘测试函数用到的测试代码

select myFunc(1,2) from dual;

 

存储过程执行结果:

3

PL/SQL procedure successfully completed

--------------------------------------------

函数执行结果

MYFUNC(1,2)

-----------

3

你可能感兴趣的:(java,oracle,sql,db2,pascal)