Oracle调用Java代码
Oracle中可以调用Java的代码,一般通过两种方式进行调用,一个是直接将Java代码写在Oracle内部,另外一种是将编译好的class文件载入到Oracle中。
-A-
1、在SQLPlus中创建Oracle中的Java类与方法(方法必须是静态公有方法)
create or replace and compile java source named hello as
public class Hello {
public static String Message(String name) {
return "Hello, " + name;
}
}
2、创建函数调用载入Oracle中的Java方法。
create or replace function hello (name varchar2)
return varchar2
as
language java name 'Hello.Message(java.lang.String) return java.lang.String';
3、执行函数即可看到结果......
select hello('world!') from dual
-B-
1、创建要调用的Java代码,并编译成Class文件。被调用的方法依旧必须为静态公有方法
public class Number {
public static int getNumber() {
return 99;
}
}
2、用loadjava命令在控制台上将class文件加载到Oracle环境中
loadjava -u sys/sys@orcl -oci8 -verbose -grant scott -synonym -resolve -schema scott D:\Number.class
如果想要卸载已经加载的class的话,使用dropjava命令
dropjava -user sys/sys@orcl Number
如果提示如下信息,表示加载成功()
arguments: '-u' 'sys/sys@orcl' '-oci8' '-verbose' '-grant' 'scott' '-synonym' '-resolve' '-schema' 'scott' 'D:\Number.class'
identical: Number
granting : execute on class SCOTT.Number to scott
skipping : class SCOTT.Number
synonym : SCOTT.Number
Classes Loaded: 1
Resources Loaded: 0
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 0
Classes skipped: 0
Synonyms Created: 1
Errors: 0
3、创建调用方法的方式同A方式的第2步
4、调用方法的方式同A方式的第3步
相关文档:
何为LOB?
lob为oracle数据库的一个大对象数据类型,可以存储超过4000bytes的字符串,二进制数据,OS文件等大对象信息.最大可存储的容量根oracle的版本和oracle 块大小有关.
有那几种可供选择的LOB类型?
目前ORACLE提供了CLOB,NCLOB,BLOB,BFILE共四种LOB类型,CLOB,NLOB为大字符串类型,NLOB为多语言集字符类型,类似于NV ......
public boolean copy(String from, String to) {
boolean temp=true;
FileInputStream stream;
try {
stream = new FileInputStream(new File(from));
FileOutputStream bos = new FileOutputStream(to);
int bytesRea ......
1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:\xyz\test.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个
URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
......
JAVA中的传递都是值传递吗?有没有引用传递呢?
在回答这两个问题前,让我们首先来看一段代码:
Java代码
public class ParamTest {
// 初始值为0
protected int num = 0;
// 为方法参数重新赋值
public void change(int i) {
i = 5;
}
// 为方法参数重新赋值
public void change(ParamTest t) {
P ......