搜索
首页 电脑/网络 软件 系统软件

在Oracle中使用Java的存储过程方法有哪些呢?

在Oracle中使用Java的存储过程方法有哪些呢?

全部回答

2017-07-26

50 0
    1。 使用oracle的sql语句来创建: e。g。 使用create or replace and compile java source named "" 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。 13。Java 已创建。   14。
   15。SQL> show errors java source "javademo1" 16。没有错误。 17。 18。SQL> create or replace procedure javademo1 19。
   2 as 20。 3 language java name 'JavaDemo1。  main(java。lang。String[])'; 21。 4 / 22。 23。
  过程已创建。 24。 25。SQL> set serveroutput on 26。SQL> call javademo1(); 27。 28。调用完成。 29。 30。SQL> call dbms_java。
    set_output(5000); 31。 32。调用完成。 33。 34。SQL> call javademo1(); 35。hello, java demo1 36。
   37。调用完成。 38。 39。SQL> call javademo1(); 40。hello, java demo1 41。  调用完成。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。 9。 10。SQL> grant create any directory to scott; 11。
   12。授权成功。   13。 14。SQL> conn scott/tiger@iihero。oracledb 15。已连接。 16。SQL> create or replace directory test_dir as 'd:/oracle'; 17。
   18。目录已创建。 19。   20。SQL> create or replace java class using bfile(test_dir, 'OracleJavaProc。
  CLASS') 21。 2 / 22。 23。Java 已创建。 24。 25。SQL> create or replace procedure testjavaproc as language java name 'OracleJavaProc。
    main(java。lang。String[])'; 26。 2 / 27。 28。过程已创建。 29。 30。SQL> call testjavaproc(); 31。
   32。调用完成。 33。 34。SQL> execute testjavaproc; 35。   36。PL/SQL 过程已成功完成。 37。 38。SQL> set serveroutput on size 5000 39。
  SQL> call dbms_java。set_output(5000); 40。 41。调用完成。 42。 43。SQL> execute testjavaproc; 44。  It's a Java Oracle procedure。
  3。 我推荐的一种方法,直接使用loadjava命令远程装载并创建。 先创建一个类, e。g。 1。import java。sql。*; 2。import oracle。jdbc。*; 3。 4。
  public class OracleJavaProc { 5。   6。 //Add a salgrade to the database。 7。 public static void addSalGrade(int grade, int losal, int hisal) { 8。
   9。 System。out。println("Creating new salgrade for EMPLOYEE…"); 10。   11。 try { 12。 Connection conn = 13。
   DriverManager。getConnection("jdbc:default:connection:"); 14。 15。 String sql = 16。 "INSERT INTO salgrade " + 17。
     "(GRADE,LOSAL,HISAL) " + 18。 "VALUES(?,?,?)"; 19。 PreparedStatement pstmt = conn。prepareStatement(sql); 20。
   pstmt。setInt(1,grade); 21。   pstmt。setInt(2,losal); 22。 pstmt。setInt(3,hisal); 23。 pstmt。
  executeUpdate(); 24。 pstmt。close(); 25。 } 26。 catch(SQLException e) { 27。   System。err。
  println("ERROR! Adding Salgrade: " 28。 + e。getMessage()); 29。 } 30。 } 31。} 使用loadjava命令将其装载到服务器端并编译: 1。
  D:eclipse3。1workspacedbtest>loadjava -u scott/tiger@iihero。  oracledb -v -resolve Or 2。
  acleJavaProc。java 3。arguments: '-u' 'scott/tiger@iihero。oracledb '-v' '-resolve' 'OracleJavaProc。
  java' 4。  creating : source OracleJavaProc 5。loading : source OracleJavaProc 6。resolving: source OracleJavaProc 查询一下状态: 1。
  连接到: 2。Oracle9i Enterprise Edition Release 9。  2。0。1。0 - Production 3。With the Partitioning, OLAP and Oracle Data Mining options 4。
  JServer Release 9。2。0。1。0 - Production 5。 6。SQL> SELECT object_name, object_type, status FROM user_objects WHERE object_type LIKE 'JAVA%'; 7。
     8。OBJECT_NAME 9。-------------------------------------------------------------------------------- 10。
   11。OBJECT_TYPE STATUS 12。------------------------------------ -------------- 13。  OracleJavaProc 14。
  JAVA CLASS VALID 15。 16。OracleJavaProc 17。JAVA SOURCE VALID 测试一下存储过程: 1。SQL> create or replace procedure add_salgrade(id number, losal number, hisal num 2。
    ber) as language java name 'OracleJavaProc。addSalGrade(int, int, int)'; 3。 2 / 4。 5。
  过程已创建。 6。 7。SQL> set serveroutput on size 2000 8。  SQL> call dbms_java。set_output(2000); 9。
   10。调用完成。 11。 12。SQL> execute add_salgrade(6, 10000, 15000); 13。Creating new salgrade for EMPLOYEE… 14。
     15。PL/SQL 过程已成功完成。 16。 17。SQL> select * from salgrade where grade=6; 18。 19。 GRADE LOSAL HISAL 20。
  ---------- ---------- ---------- 21。   6 10000 15000。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
系统软件
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
软件
系统软件
多媒体软件
办公软件
网络软件
图像处理软件
系统软件
系统软件
举报
举报原因(必选):
取消确定举报