Oracle中的JAVA存储过程

今天听到java 源这个东西,开始不知道是什么,就想去试一下,感觉有些用,主记了下了.

1.oracle存储过程中取得连接的方法  
     DriverManager.defaultConnection();  
     DriverManager.getConnection("jdbc:default:connection");

对于oracle存储过程,做一个小例子

先创建一个java源

create or replace and compile java source named "li_javaDemo1"--双引号引起来
as
import java.sql.*;
public class JavaDemo1{
      public static void main(String arg[]){
             System.out.println("hello world!");
      }

//用于做只有输入参数的存储过程调用的测试

      public static void dist(String t){
             if(t.equals("li")){
                    System.out.println("hello world! your first name is "+t);
             }else{
                    System.out.println("hello world! i donot know your firstname "+t);
             }
      }

//用于做带有输出参数的存储过程调用的测试
      public static void dis(String t,String[] outval){
                System.out.println("the String you input is : "+t);
                outval[0]=t;
      }

//用于做函数测试
      public static int dis(int t){
            
        System.out.println("the number you input is "+t);
        return t*30;
      }
}
/

 

建立存储过程和函数


create or replace procedure li_p_javaDemo(tmp varchar2)
is
--language java name 'JavaDemo1.main(java.lang.String[])';
language java name 'JavaDemo1.dist(java.lang.String)';
/

--注意:在JAVA中,OUT或IN OUT参数必须对应为数组类型,即一般是适当类型的单元素数组

但是对于该实例.只能有一个输出参数,百思不得其解.如果有两个的话,运行时就会报错

create or replace procedure li_p_javaDemo1(tmp varchar2,ret out varchar2)
is
language java name 'JavaDemo1.dis(java.lang.String,java.lang.String[])';
/


create or replace function li_f_javademo(tmp number) return number
as
language java name 'JavaDemo1.dis(int)return int';
/

---------------------------------------------------------------------------------------------------

对于函数的调用:

select li_f_javademo(20) from dual

对于有输出参数过程的调用

set serveroutput on
 call dbms_java.set_output(3000) ;
 declare
   v_1 varchar2(20):='zhou';
   v_2 varchar2(20);
   begin
   li_p_javaDemo1(v_1,v_2);
   dbms_output.put_line(v_2);
   end;

 

-------------------------------------------------------------------------------------

总结一下:

在oracle内用java 源的语法

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaSourceName" AS
  import java.sql.*;
  import oracle.jdbc.*;
  ...
  //JAVA类的主体
  ...

--------------------------------------------------------------------

使用java 源的方法

CREATE [OR REPLACE] FUNCTION funciton_name [(parameter_list)]
RETURN SQL_TYEP {AS | IS}
LANGUAGE JAVA
 NAME 'class_name.method_name([full_java_type[,...]]) return full_java_type';

CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_list)] {AS | IS}
LANGUAGE JAVA
 NAME 'class_name.method_name([full_java_type[,...]])';

 

---------------------------------------------------------------

SELECT function_name(parm) FROM DUAL;
  的格式调用此函数.

对于过程,和平常用的一样.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值