1, 创建JAVA 外部例程:
1) 编制java代码
2) 将java代码加载数据库
3) 创建一个把pl/sql参数映射到java参数的pl/sql包装来发布java外部例程
将java代码加载数据库:
方法一:
create [or replace] [and {resolve | compile} [noforce] java {{source | resource}
named [schema.] primary_name}|class [schema schema_name]]
[involver_rights_clause]
[resolve resolve_clause]
{as source_text using lob_clause}
{procedure | function} procedure_name [plsql_argument_list]
as language java [name extenal_name [(java_parameter_list)]]
其中 schema 是存储java对象的模式
Primary_name 是java源代码
方法二:该方法在操作系统的命令提示符下执行的
Loadjava [options] files
例如:loadjava –uer liyongjie/123456 –resolve Md5.java
注意被存储过程调用的方法体必须是静态的
例子1:该例子是用来说明md5加密
首先编写java代码并编译:
import java.security.*;
import java.security.spec.*;
public class Md5
{
public final static String Md5(String s)
{
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
try
{
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++)
{
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
}
catch (Exception e){
return null;
}
}
public static void main(String[] args)
{
System.out.print(Md5.Md5("XX"));
}
}
然后将java文件加载数据库,在加载数据库之前先创建一个指向java文件的目录
create or replace directory JAVA_DIR
as 'D:\BOOKS\Oracle\Oracle and Java';
再加载java文件:
create or replace and resolve java source
named MD5 using bfile(java_dir,'Md5.java') ;
再发布例程:
create or replace package md5 as
function f_md5(v_str in varchar2) return varchar2 is
language java name 'Md5.Md5(java.lang.String) return java.lang.String';
end md5;
最后调用测试:
declare
v_str varchar2(500);
begin
v_str := md5.f_md5('x');
dbms_output.put_line(v_str);
end ;
例子2:该例子实现阶乘
Java类:
public class Fun
{
public static int Fun(int n)
{
int m=0;
if(n==0)
{
return 0;
}
else if(n==1)
{
return 1;
}
else
{
for(int i=1;i<=n;i++)
{
m=n*Fun(n-1);
}
return m;
}
}
}
加载java文件:
create or replace and resolve java source
named MD5 using bfile(java_dir,'Md5.java') ;-- java_dir: directory (目录)
发布例程:
create or replace package pkg_fun as
function fun(i_number in number) return number is
language java name 'Fun.Fun(int) return int';
end;
测试:
declare
v_fun number;
begin
v_fun := pkg_fun.fun(5);
dbms_output.put_line(v_fun);
end ;
分享到:
相关推荐
000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA概述及开发环境搭建】_Java开发环境搭建笔记.pdf 010201_【第2...
│ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...
Oracle学习笔记...............121 前言....................................121 第一章 Selecting Rows.....................124 第二章 Limiting Selected Rows.......127 第三章 Single Row Functions.............
以下是对Oracle数据库课堂笔记的详细解析,涵盖了从基础到进阶的重要知识点。 第一讲:Oracle简介 Oracle数据库是由甲骨文公司开发的,提供了一整套数据存储、管理和检索解决方案。它支持多种操作系统和硬件平台,...
《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...
### JAVA学习笔记知识点详解 #### 一、计算机概述 1. **计算机**:电子设备,用于处理信息。 2. **计算机硬件**: - **中央处理器(CPU)**:计算机的大脑,负责处理指令。 - **内存(RAM)**:临时存储数据,...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
韩顺平作为IT培训讲师,其Oracle视频教学内容被整理成笔记,旨在帮助初学者快速入门Oracle数据库。以下是从提供的文件内容中提炼出的知识点: 1. Oracle基本使用:文档提到基本命令的使用,这些是进行数据库操作的...
Oracle学习笔记...............121 前言....121 第一章 Selecting Rows.....................124 第二章 Limiting Selected Rows.......127 第三章 Single Row Functions..........127 第四章 Displaying Data from ...
"18天Java学习之经典笔记"是一份专为快速掌握Java基础知识而设计的学习资料,适用于那些希望在短时间内复习、备考或者准备面试的人员。这份笔记涵盖了Java的核心概念,通过18天的学习计划,帮助读者逐步理解并熟练...
Java是1995年由SUN公司(现已被Oracle收购)推出的高级编程语言,最初名为Oak,设计初衷是为了适应互联网编程需求。Java以其安全性、可靠性和面向对象的特性深受开发者喜爱,并具有跨平台的能力,这得益于Java虚拟机...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
- Java支持十进制、八进制(前缀0)、十六进制(前缀0x或0X)。 5. **原码、反码、补码**: - 原码表示整数的二进制形式。 - 反码表示负数时将所有位取反。 - 补码是在反码的基础上再加1得到的结果,用于表示...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它...以上是对"ORACLE入门到精通笔记"的主要知识点概述,通过深入学习和实践,你将能够熟练掌握Oracle数据库的使用,为你的职业生涯打下坚实的基础。
整篇笔记的内容是对Oracle教学视频的学习笔记,对于初学者来说是很好的参考资料,它不仅详细记录了编程的基础知识点,还包含了实用的编程技巧和思考方法。通过学习这些内容,可以加深对Java编程语言的理解,为后续更...
### Extjs 5 学习笔记之 SenchaCmd 深入解析 #### 一、SenchaCmd 的简介 SenchaCmd 是一个跨平台的命令行工具,它为基于 ExtJS 和 Sencha Touch 应用程序的开发周期提供了全面的支持。从创建应用程序的基础结构到...
Java学习笔记是一个全面涵盖Java编程语言的学习资源,旨在帮助初学者和有经验的开发者深入理解Java的核心概念和技术。笔记可能包括了从基础语法、面向对象编程到高级特性,如多线程、网络编程以及异常处理等多个方面...
《韩顺平java从入门到精通1-32课源码笔记》是一份全面而深入的Java学习资源,由知名讲师韩顺平精心讲解。这份资料涵盖了从Java基础到高级特性的全方位教学,旨在帮助初学者系统地掌握这门强大的编程语言。下面,我们...
这是一篇面向初学者的学习笔记,通过一系列具体的SQL语句示例来帮助读者更好地理解如何在Oracle环境中执行基本的数据查询。 #### 1. 基础表结构 在学习SQL查询之前,我们需要了解表`emp`的基本结构。表`emp`包括...