Java函数转换成Oracle中的函数

Oracle中有个非常强大的功能就是可以把Java编写的函数转换成Oracle数据库中的函数.转换之后我们可以像一般的函数那样用它.因为Oracle本身就是Java开发的,所以自然能很好的和Java兼容.我们就来说下具体怎么操作.就举一个简单例子,创建一个生成文件的函数.


1.第一步,建创java resource对象,它和function,procedure等对象一样都是Oracle中的object.所以语法也有一点点类似.



create or replace and compile java source named createfile as --除开这一句下面的全部是标准的Java,如果你在eclipse中创建了一个class你可以原封不动复制过来.

--createfile是对象的名字,就像表名一样.不过我们在函数的转换中不会直接用到它.只要用到Java中的类名和其中的函数名.java source对象名和里面java类名都不能重复.


package weiwenhp; --此处包名的定义也可以去掉不要.但如果以后创建类时想调用这个类则必须要加上package.
import java.io.*;
public class JavaClass
{
public static boolean createFile(String path,String fileName)
{
String fileInfo = path + "\\" + fileName;
File newFile = new File(fileInfo);
try{
return newFile.createNewFile();
}
catch (Exception e){
System.out.println(e.toString());
return false;
}
}
}


2.第二步.创建一个Oracle函数并引用上面的Java函数createFile



CREATE OR REPLACE FUNCTION newfile (path IN STRING,filename IN STRING)
RETURN boolean
IS
LANGUAGE JAVA
NAME
'weiwenhp.JavaClass.createFile(java.lang.String,java.lang.String) return boolean';

其中IS之前的语句是创建函数的标准语句.记得函数的参数和返回类型要和引用的java函数的参数和返回类型一致.后面的 LANGUAGE JAVA NAME是固定的关键字.

然后就是单引号中的内容了:格式是包名.类名.函数名(参数列表) return 函数返回类型.

到此任务完成.Oracle中产生了一个叫newfile的function.


3.写一段pl/sql来验证下.



declare
createresult boolean;
begin
createresult:= newfile ('d:\\','weiwenhp.txt'); --注意Java中字符串是用双引号,但Oracle中是用单引号.另外Java中区分大小写.Oracle中不区分.但引号内的是区分的
if(createresult) then
dbms_output.put_line('create file success');
else
dbms_output.put_line('create file failed');
end if;
end;


4.补充,调用自定义的类



我们知道在Java中除了调用系统定义好的类外还可以调用自定义的类.在这里也一样可以做到.

假如我们再创建一个java source.要调用前面定义好的类JavaClass

create or replace and compile java source named newcreatefile as

import weiwenhp.JavaClass; --这里就是调用之前创建的class,要注意的一点是之前定义的类一定要用到package才行.其中weiwenhp就是package的名字

--如果直接这样调用会错import JavaClass.

import java.io.*;

public class NewJavaClass
{
//...........
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值