如何在Oracle中使用Java存储过程(详解)

发表于:2012-4-18 11:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:iihero    来源:51Testing软件测试网采编

  其实,这篇短文,我早就应该写了。因为,Java存储过程今后在各大数据库厂商中越来越流行,功能也越来越强大。这里以Oracle为例,介绍一下java存储过程的具体用法。

  一、如何创建java存储过程?

  通常有三种方法来创建java存储过程。

  1、使用oracle的sql语句来创建:

  e.g. 使用create or replace and compile java source named "<name>" as

  后边跟上java源程序。要求类的方法必须是public static的,才能用于存储过程。

  1. SQL> create or replace and compile java source named "javademo1" 
  2.   2  as 
  3.   3  import java.sql.*;  
  4.   4  public class JavaDemo1  
  5.   5  {  
  6.   6  public static void main(String[] argv)  
  7.   7  {  
  8.   8  System.out.println("hello, java demo1");  
  9.   9  }  
  10.  10  }  
  11.  11  /  
  12. Java 已创建。  
  13. SQL> show errors java source "javademo1" 
  14. 没有错误。  
  15. SQL> create or replace procedure javademo1  
  16.   2  as 
  17.   3  language java name 'JavaDemo1.main(java.lang.String[])';  
  18.   4  /  
  19. 过程已创建。  
  20. SQL> set serveroutput on 
  21. SQL> call javademo1();  
  22. 调用完成。  
  23. SQL> call dbms_java.set_output(5000);  
  24. 调用完成。  
  25. SQL> call javademo1();  
  26. hello, java demo1  
  27. 调用完成。  
  28. SQL> call javademo1();  
  29. hello, java demo1  
  30. 调用完成。

  2、使用外部class文件来装载创建

  e.g. 这里既然用到了外部文件,必然要将class文件放到oracle Server的某一目录下边。

  1. public class OracleJavaProc  
  2. {  
  3.     public static void main(String[] argv)  
  4.     {  
  5.         System.out.println("It's a Java Oracle procedure.");  
  6.     }  
  7. }  
  8. SQL> grant create any directory to scott;  
  9. 授权成功。  
  10. SQL> conn scott/tiger@iihero.oracledb  
  11. 已连接。  
  12. SQL> create or   replace   directory   test_dir   as  'd:/oracle';  
  13. 目录已创建。  
  14. SQL> create or replace java class using bfile(test_dir, 'OracleJavaProc.CLASS')  
  15.   2  /  
  16. Java 已创建。  
  17. SQL> create or replace procedure testjavaproc as language java name 'OracleJavaProc.main(java.lang.String[])';  
  18.   2  /  
  19. 过程已创建。  
  20. SQL> call testjavaproc();  
  21. 调用完成。  
  22. SQL> execute testjavaproc;  
  23. PL/SQL 过程已成功完成。  
  24. SQL> set serveroutput on size 5000  
  25. SQL> call dbms_java.set_output(5000);  
  26. 调用完成。  
  27. SQL> execute testjavaproc;  
  28. It's a Java Oracle procedure.

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号