`
hy_zhym
  • 浏览: 15661 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

oracle触发器调用java程序

 
阅读更多

1、创建java程序:接收存储过程传递的参数,发送socket通信。

create or replace and compile java source named jym as
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.StringWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class JYM {
	public static  String sendSynMsg(String ipAddr, byte[] datas) throws Exception{
		InetSocketAddress endpoint = new InetSocketAddress(ipAddr ,18002);
		Socket socket = null;
		OutputStream out = null;
		InputStream in = null;
		try	{
			socket = new Socket();
			socket.connect(endpoint);
			out = socket.getOutputStream();
			in =  socket.getInputStream();
			out.write(datas);
			out.flush();
			return null;
		} finally {
			if (out != null) {
				try {
					out.close();
				} catch(Exception ex) {
					ex.printStackTrace();
				}
			}
			if (in != null) {
				try {
					in.close();
				} catch(Exception ex) {
					ex.printStackTrace();
				}
			}
			if (socket != null) {
				try {
					socket.close();
				} catch(Exception ex) {
					ex.printStackTrace();
				}
			}
		}
	}
	public static void say(String ip,byte[] context) throws Exception {
		String str=JYM.sendSynMsg(ip,context);   
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.9.109:1521:orcl","zhym","jhhz621");  
		PreparedStatement pr=conn.prepareStatement("insert into backdata(context) values(?)");
		pr.setBytes(1, context);
		pr.executeUpdate();
		pr.close(); 
		conn.close();
	}
}

 2、存储过程调用java source

create or replace procedure socket(
ip varchar2,
context raw
)
as
language java name
'JYM.say(java.lang.String,byte[])';

 3、触发器调用存储过程

create or replace trigger todata_after
  after insert on todata
  for each row
begin
   socket('192.168.9.12',:new.context);
end todata_after;

 

 

代码写好后可以先用存储过程测试:

call  socket('192.168.9.12','023132');

 为了能在控制台中看见错误信息,要先运行下面3句话

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

 

 

假如你运行存储过程时爆出了  请给用户复制权限的提示则按照提示在sysdba 下赋权限,如:

exec dbms_java.grant_permission('zhym','SYS:java.net.SocketPermission','192.168.9.12:18002','connect,resolve')

exec dbms_java.grant_permission('ZHYM','SYS:java.net.SocketPermission','127.0.0.1:1521','connect,resolve')

 

exec 后面的语句会在你的报错提示中打印出来,只要前面加exec就可以了。

 

分享到:
评论

相关推荐

    个人亲测oracle触发器调用java程序

    个人亲测oracle触发器调用java程序

    oracle 触发器实时调用java 中http接口

    oracle insert数据成功之后调用触发器,触发器调用存储过程,存储实时调用java http

    Oracle触发器里调用Java程序

    NULL 博文链接:https://softwarexiang120.iteye.com/blog/773557

    oracle触发器调用java类.pdf

    。。。

    oracle触发器调用java类.docx

    。。。

    oracle调用java包

    提供oracle调用java包的方式,提供oracle调用java包的方式

    oracle触发器实现二维码

    本资源实现的一个用java代码实现数据二维码图片的生成,用触发器实现将生成的二维码图中转换成blob格式并插入到数据表中

    Oracle教程,java调用oracle

    基本查询 过滤和排序 单行函数 组函数 多表查询 子查询 集合运算 创建和管理表 光标 例外 Java调用存储过程和存储函数 触发器

    oracle Socket监听数据库推送信息

    oracle触发器+存储过程+java socket 实现数据库监听,一旦数据库改变,返回消息调用java 方法

    oracle进阶之PLSQL编程.rar_oracle_oracle 编程_应用于java程序

    通过学习PL/SQL基础语法和函数、存储过程、包、触发器等数据库对象的概念、基本语法及应用,达到学以致用的目的,并能在应用程序中调用存储函数及过程

    oracle常用命令-一完整的电子商务网案例

    电子商务网站案例下载:(数据库脚本,java调用示例,.net(c#)调用示例 说明:一个电子商务网站的oracle数据库完整设计,包括: ...Oracle常用命令14(.net / java代码调用(sql代码、程序包过程))

    oracle 学习 笔记 实用

    oracle 日常学习的记录…… java调用oracle的存储过程 oracle number(1)一般对应于Java中的类型 Oracle常用函数 oracle触发器new Oracle中自增字段的两种方法 字典表查询

    Oracle11gPLSQLProgramming

    本书内容丰富,结构合理,全面涵盖... ·通过Oracle Net Services 和PL/SQL 包装器调用外部过程;  ·使用Oracle JVM 集成内部和服务器端Java 类库;  ·使用PL/SQL Gateway 和Web Toolkit 开发健壮的Web 应用程序。

    Oracle11g从入门到精通2

    从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用开发基础,并通过两个完整案例来介绍基于Java开发包和Oracle数据库...

    21天学通Oracle

    第一篇 Oracle管理配置 第1章 Oracle安装配置(教学视频:10分钟) 23 1.1 Oracle简介 23 ...第22章 Oracle在Java开发中的应用(教学视频:38分钟) 376 第23章 Oracle在C#开发中的应用(教学视频:12分钟) 391

    Oracle.Database.11g.PL_SQL.Programming

    本书内容丰富,结构合理,全面涵盖... ·通过Oracle Net Services 和PL/SQL 包装器调用外部过程;  ·使用Oracle JVM 集成内部和服务器端Java 类库;  ·使用PL/SQL Gateway 和Web Toolkit 开发健壮的Web 应用程序。

    Oracle11g从入门到精通

    从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用开发基础,并通过两个完整案例来介绍基于Java开发包和Oracle数据库...

    oracle实验报告

    (2)一个 FOR EACH ROW 执行指定操作的触发器为操作修改的每一行都调用一次。 (3)SELECT 并不更改任何行,因此不能创建 SELECT 触发器。这种场合下规则和视图更适合。 (4)触发器和某一指定的表格有关,当该表格...

Global site tag (gtag.js) - Google Analytics