`
jeelee
  • 浏览: 639464 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle学习笔记(第十八章: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

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

例子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 ;

分享到:
评论

相关推荐

    基于hadoop的百度云盘源代码(亲测可用完整项目代码)

    基于hadoop的百度云盘源代码(亲测可用完整项目代码),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的

    cruise软件模型,串联混动ECMS,cruise增程混动仿真模型,A-ECMS控制策略,Cruise混动仿真模型,串联混动汽车动力性经济性仿真 关于模型 1.本模型是基于增程混动架构搭建的cru

    cruise软件模型,串联混动ECMS,cruise增程混动仿真模型,A-ECMS控制策略,Cruise混动仿真模型,串联混动汽车动力性经济性仿真。 关于模型 1.本模型是基于增程混动架构搭建的cruise仿真模型,串联混动架构,实现简易的A-ECMS控制,可用于相关策略开发及课题研究。 2.模型是基于cruise simulink搭建的base模型,策略模型基于MATLAB Simulink平台搭建完成,通过C++编译器编译成dll文件给CRUISE引用,实现联合仿真。 3.尽可能详细的描写了策略说明,大约14页左右,主要解释策略搭建逻辑及各模式间的转。 4.模型主要供学习使用,不同的车型控制策略必然不同,请不要抱着买来即用的态度拿后,具体车型仿真任务请根据需求自行变更模型,或联系模型定制。 5.使用模型前请确保有相应软件基础,卖的是模型,不是软件教程。 关于模型策略问题可以适当交流,但不做软件保姆式教学。 6.模型由“王浮生不怕生”搭建,拿后模型提供五天文字,盗版用户不提供,找谁买的问谁去。 7.文件包含:cruise模型、simulink策略模型、策略说明文档。 8.DLL文件使

    Java 21 新特性详解:虚拟线程、字符串模板与模式匹配等亮点

    Java 21 是一款里程碑式的版本,虚拟线程让高并发编程突破极限,字符串模板让文本处理更简单直观,模式匹配增强则彻底解放你的双手。加上性能优化、集合新功能,它不仅让开发更轻松,还能大幅提升应用运行效率。快来体验这个重新定义开发体验的版本吧!

    基于java的无人超市管理系统设计与实现.docx

    基于java的无人超市管理系统设计与实现.docx

    2021中国新锐品牌发展研究:食品饮料行业报告.pdf

    2021中国新锐品牌发展研究:食品饮料行业报告

    永磁同步电机FOC矢量控制4种方法模型:双闭环PI控制、电流滞环控制、转速环滑模控制、电流环PR控制4个simulink模型 三相永磁同步电机矢量控制Matlab Simulink仿真模型,带有各部分

    永磁同步电机FOC矢量控制4种方法模型:双闭环PI控制、电流滞环控制、转速环滑模控制、电流环PR控制4个simulink模型 三相永磁同步电机矢量控制Matlab Simulink仿真模型,带有各部分模块详细介绍文档及参考文献17篇。 内容非常全面,说明文档从转速电流双闭环PI控制开始介绍,同时含滞环电流控制、滑模速度控制、静止坐标系下电流PR控制的原理介绍、模型介绍、参数计算步骤、模块结构介绍和仿真波形分析。 方便对比加深理解,以及改进丰富内容。 总共含4个矢量控制(FOC)的Simulink仿真模型,清单如下: (1)一般矢量控制即转速环、电流环均采用PI调节器,则对应仿真模型PMSM_FOC_PI.slx文件。 (2)在(1)的基础上把电流环PI控制器成滞环控制,则对应仿真模型PMSM_Zhihuan.slx文件。 (3)把转速环PI控制器成滑模控制,则对应仿真模型PMSM_SMC.slx文件。 (4)若电流控制中不采用坐标变,把电流环PI控制器成PR控制器,则对应仿真模型PMSM_PR.slx。 Matlab2015b以上都能正常运行,参数已调好,可直接运行。 内含资料,对Si

    数据结构与算法中的回文串:马拉车算法与中心扩展法的Python实现及其应用

    内容概要:本文详细介绍了关于寻找最长回文子串的相关知识,包括前置理论、不同求解方法的具体操作及其优势。首先,阐述了回文串这一特殊结构的概念及其特性——正序逆序完全一致。紧接着,围绕中心扩展法和马拉车算法展开叙述。前者基于字符逐一检查周边字符的方法,在每一点向外延伸探索最长相同序列。而后者利用预处理阶段将字符间隔用特殊符号填充形成全新字符串形式,并建立相应的辅助工具(如回文半径数组)用于跟踪回文中点位置与范围变动情况,再经由巧妙规则判定并逐步推进搜索进度,从而大大降低了运行成本。最后还提到了两种常规方法——动态规划与中心扩展的具体思路以及它们各自适用的情况和局限性。 适合人群:正在研究或学习数据结构和算法特别是字符串处理相关领域的技术人员和爱好者。 使用场景及目标:帮助开发者针对字符串匹配类的问题,尤其是回文判定和查找场景,掌握更多高效的解决方案,优化程序性能。具体应用场景如文本编辑器、搜索引擎中的关键字检索等方面可能会涉及到这类算法的应用。

    录屏软件亲测可用哦,非常好用

    录屏

    C语言实践作业飞机大战.zip

    C语言实践作业飞机大战.zip

    人机对话意图识别数据集

    人机对话意图识别数据集

    瑞幸咖啡企业微信群话术及人设搭建SOP.xlsx

    瑞幸咖啡企业微信群话术及人设搭建SOP.xlsx

    基于java的居家养老健康管理系统设计与实现.docx

    基于java的居家养老健康管理系统设计与实现.docx

    基于java的在线租房招聘平台设计与实现.docx

    基于java的在线租房招聘平台设计与实现.docx

    基于java的企业信息管理系统设计与实现.docx

    基于java的企业信息管理系统设计与实现.docx

Global site tag (gtag.js) - Google Analytics