oracle创建java外部例程

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

 

注意被存储过程调用的方法体必须是静态的

 

例子:该例子是用来说明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 ;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值