zoukankan      html  css  js  c++  java
  • java source(2)

    Oracle sql语句创建java存储过程

    使用Oracle sql语句来创建:

    e.g. 使用


    create or replace and compile java source named "<name>" as 

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


    SQL> create or replace and compile java source named "javademo1"  
    as  
    import java.sql.*;  
    public class JavaDemo1  
    {  
    public static void main(String[] argv)  
    {  
    System.out.println("hello, java demo1");  
    }  
    }  

    Java 已创建。


    SQL> show errors java source "javademo1" 

    没有错误。


    SQL> create or replace procedure javademo1  
    as  
    language java name 'JavaDemo1.main(java.lang.String[])';  

    过程已创建。


    SQL> set serveroutput on  
    SQL> call javademo1(); 

    调用完成。


    SQL> call dbms_java.set_output(5000); 

    调用完成。


    SQL> call javademo1();  
    hello, java demo1 

    调用完成。


    SQL> call javademo1();  
    hello, java demo1 


    调用完成。
    2. 使用外部class文件来装载创建
    e.g. 这里既然用到了外部文件,必然要将class文件放到Oracle Server的某一目录下边。

    授权成功。


    SQL> conn scott/tiger@iihero.Oracledb 


    已连接。
     


    SQL> create or replace directory test_dir as 'd:\Oracle'; 

    目录已创建。


    SQL> create or replace java class using bfile(test_dir, 'OracleJavaProc.CLASS')  
    2 / 

    Java 已创建。


    SQL> create or replace procedure testjavaproc as 
    language java name 'OracleJavaProc.main(java.lang.String[])';  
    2 / 

    过程已创建。


    SQL> call testjavaproc(); 

    调用完成。


    SQL> execute testjavaproc; 

    PL/Oracle SQL 过程已成功完成。


    SQL> set serveroutput on size 5000  
    SQL> call dbms_java.set_output(5000); 

    调用完成。


    SQL> execute testjavaproc;  
    It's a Java Oracle procedure. 


    3. 我推荐的一种方法,直接使用loadjava命令远程装载并创建。
    先创建一个类, e.g.


    import java.sql.*;  
    import Oracle.jdbc.*;  
    public class OracleJavaProc ...{  
    Add a salgrade to the database.  
    public static void addSalGrade
    (int grade, int losal, int hisal) ...{  
    System.out.println
    ("Creating new salgrade for EMPLOYEE...");  
    try ...{  
    Connection conn =  
    DriverManager.getConnection("jdbc:default:connection:");  
    String sql =  
    "INSERT INTO salgrade " +  
    "(GRADE,LOSAL,HISAL) " +  
    "VALUES(?,?,?)";  
    PreparedStatement pstmt = conn.prepareStatement(sql);  
    pstmt.setInt(1,grade);  
    pstmt.setInt(2,losal);  
    pstmt.setInt(3,hisal);  
    pstmt.executeUpdate();  
    pstmt.close();  
    }  
    catch(SQLException e) ...{  
    System.err.println("ERROR! Adding Salgrade: "   
    + e.getMessage());  
    }  
    }  
    }   

    使用loadjava命令将其装载到服务器端并编译:


    D:eclipse3.1workspacedbtest>loadjava -u scott/tiger@iihero.Oracledb -v -resolve Or  
    acleJavaProc.java  
    arguments: '-u' 'scott/tiger@iihero.Oracledb '-v' '-resolve' 'OracleJavaProc.java'  
    creating : source OracleJavaProc  
    loading : source OracleJavaProc  
    resolving: source OracleJavaProc 

    查询一下状态:

    连接到:


    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production  
    With the Partitioning, OLAP and Oracle Data Mining options  
    JServer Release 9.2.0.1.0 - Production  
    SQL> SELECT object_name, object_type, 
    status FROM user_objects WHERE object_type LIKE 'JAVA%';  
    OBJECT_NAME  
    OBJECT_TYPE STATUS  
    OracleJavaProc  
    JAVA CLASS VALID  
    OracleJavaProc  
    JAVA SOURCE VALID  

    测试一下存储过程:


    SQL> create or replace procedure add_salgrade(id number, losal number, hisal num  
    ber) as language java name 'OracleJavaProc.addSalGrade(int, int, int)';  
    2 / 

    过程已创建。


    SQL> set serveroutput on size 2000  
    SQL> call dbms_java.set_output(2000); 

    调用完成。


    SQL> execute add_salgrade(6, 10000, 15000);  
    Creating new salgrade for EMPLOYEE... 

    PL/SQL 过程已成功完成。


    SQL> select * from salgrade where grade=6;  
    GRADE LOSAL HISAL  
    6 10000 15000  

    以上的相关内容就是对如何创建java存储过程,即如何使用Oracle sql语句来创建的内容介绍,望你能有所收获。

  • 相关阅读:
    Schema和数据类型优化?
    语雀发布博客园
    为知笔记文章目录
    码云搭建博客
    springboot的过滤器、监听器、拦截器
    springboot常用注解
    springboot使用小技巧合集
    springboot整合swagger2
    强制卸载win软件
    xshell下载和优化配置
  • 原文地址:https://www.cnblogs.com/Mayvar/p/wanghonghua_201103300200.html
Copyright © 2011-2022 走看看