PL/SQL 调用JAVA使用UDP发送数据
步骤如下
1.直接在SQL命令中写入JAVA代码(用SYS帐号执行,不然权限等太麻烦)
create or replace and resolve java source named udp
as
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class udp {
/*
public static void main(String[] args){
udp.send("192.168.0.110","514","java 1.5 send successfully!");
}
*/
public static String send(String ip,String port,String msg){
try{
int int_port=Integer.parseInt(port); //字符转整形
DatagramSocket ds = new DatagramSocket();
DatagramPacket dp = new DatagramPacket(msg.getBytes(), msg.length(), InetAddress.getByName(ip), int_port);
ds.send(dp);
ds.close(); //关闭连接
return "Successfully";
}catch(Exception e){
return "Failed";
}
}
}
-----------------------------------------------------------------------------------
提示:
或者先用JAVAC编译完JAVA代码,再用 loadjava 命令上传
C:\>javac udp.java
/*dbadmin 为数据库管理员权限(普通权限也可以)*/
C:\>loadjava -user dbadmin/password@sid -o -v -f -r c:\udp.class
//此步骤如同使用 create or replace and resolve java source named udp 。。。一样。
------------------------------------------------------------------------------------
2.编写调用JAVA的包或方法
--包头
create or replace package udp is
function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2; --成功返回 Successfully,否则返回其他
end udp;
/
--包体
create or replace package body udp is
function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2 is
language java name 'udp.send(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';
end udp;
------------------------------------------------------------------
提示:
使用 PLSQL 方法也可以,如下
function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2 is
language java name 'udp.send(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';
------------------------------------------------------------------
3.把 udp 包授权给普通用户,普通用户就可以使用了。
在SQL输入命令(使用SYS帐号),如下
GRANT EXECUTE ON udp TO USERNAME;
------------------------------------------------------------------
提示
如果出现网络等错误,可用如下代码解决(用SYS 帐输入,如下代码)
begin
dbms_network_acl_admin.create_acl (
acl => 'UTL_INADDR.xml',
description => 'utl_inaddr',
principal => 'USERNAME', --此为将来要进行操作的用户
is_grant => TRUE,
privilege => 'resolve'
);
commit;
end;
/
begin
dbms_network_acl_admin.add_privilege (
acl => 'UTL_INADDR.xml',
principal => 'USERNAME',
is_grant => true,
privilege => 'connect'
);
commit;
end;
/
begin
dbms_network_acl_admin.assign_acl(
acl => 'UTL_INADDR.xml',
host => '*'
);
commit;
end;
/
exec sys.dbms_java.grant_permission( 'USERNAME', 'SYS:java.net.SocketPermission', '192.168.1.110:514', 'connect,resolve' );
------------------------------------------------------------------
4.使用
declare
l_res varchar2(100);
begin l_res:=udp.send('192.168.0.10','1234','我是将要发送的内容');
if upper(l_res)='SUCCESSFULLY' then
htp.print('发送成功!');
else
htp.print('发送失败!');
end if; end;
---------------------------------------
提示,如果这些代码日后不使用了,可用如下方法删除
1.删除包
drop package udp;
2.删除java
drop java source udp;
如果用 loadjava 上传的,可用
drop java class udp;
或在命令提示符下输入如下代码
dropjava -u dbadmin/password@sid001 udp.class
--------------------------------------
PL/SQL 调用JAVA使用UDP发送数据的更多相关文章
- Java使用UDP发送数据到InfluxDB
最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分 ...
- oracle PL/SQL调用Java生成Excel
现在有个需求, 要求编写oracle存储过程生成Excel文件到指定目录, 但是oracle自己的API貌似不太给力, 所以只能通过另一种更强大的语言来实现了 ——Java.有一个Java框架 ...
- PL/SQL 调用 JAVA代码
1.直接在 SQL Developer中写入代码 create or replace and compile java source named "HelloWorld" as p ...
- 通过 UDP 发送数据的简单范例
package j2se.core.net.udp; import java.io.IOException;import java.net.DatagramPacket;import java.net ...
- C#调用API向外部程序发送数据
C#调用API向外部程序发送数据 最近有可能要做一个项目.在项目中有这么一个功能,在A程序中调用B程序,同时在A程序中进行登陆后,要将A程序的登录名和密码自动填充到B程序的登陆对话框中,这样B程序就不 ...
- java实现udp发送端和接收端
发送端: package demo02; import java.io.IOException; import java.net.DatagramPacket; import java.net.Dat ...
- PL/SQL导出到execl中,数据前面的0发生丢失的解决办法
ERR出现的场景再现: 使用 PL/SQL导出按钮,选择‘CSV文件’,保存为1.csv,后用execl打开,复制到VuGen中作为login脚本的参数化文件username. ERR及发现过程: 在 ...
- PL/SQL 导入excel表格到oracle数据表
通过使用PL/SQL 批量查询取数时,将excel中的每一列数据复制黏贴进新建的中间表,黏贴时会有贴歪的情况,也就是某些列会从第二第三行开始插入整列,导致数据乱掉,然后好像又不支持批量删除整列数据,所 ...
- PL/SQL简单使用——导入、导出数据表
1.使用PL/SQL导出.导入表 在使用PL/SQL操作oracle数据库时,经常使用的一个操作就是将自己写的数据表导出,或者想把他人的数据表导入到自己的数据库中.虽然是很简单的操作,但自己之前一直出 ...
随机推荐
- ServiceFabric极简文档-5.1 编程模型选择
项目中:actor用的服务是无状态服务:ASP.NET Core用的是无状态ASP.NET Core模板.
- Java连载6-变量的要求
一.数据类型的作用 (1)不同的数据有不同的类型,不同的数据类型底层会分配不同的大小的空间 (2)数据类型是指程序在运行阶段应该分配多大的内存空间 二.变量要求 变量中存储的具体的“数据”必须和变量的 ...
- 关于MarkDownPad2安装遇到的一些问题
关于MarkdownPad MarkdownPad是Windows下的一个多功能Markdown编辑器.即时看到你的Markdown文件,当你创建它们的时候,看起来就像是在HTML中的一样.当您输入时 ...
- 【题解】P1892 [BOI2003]团伙-C++
原题传送门 前置知识:并查集,不会的补了再来. 这道题只是在并查集的基础上多了一个操作而已. 这种操作,叫做反集(就先这么叫着) 题目里有一种关系是互为朋友,这很好理解,把互为朋友的两个点合并就可以了 ...
- TCP概述\三次握手四次挥手\报文首部,常用熟知端口号
06.26自我总结 1.TCP概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为 ...
- 【原创】用事实说话,Firefox 的性能是 Chrome 的 2 倍,Edge 的 4 倍,IE11 的 6 倍!
前言 每个浏览器新版本发布,都号称性能有显著提升,并且市面有各种测试工具,测试结果也是大相径庭,比如下面这篇文章: https://www.oschina.net/news/97924/browser ...
- C/C++用new、delete分配回收堆中空间
int *CreateList() 10 { 11 int a[5]; 12 int *a = new int[5]; 13 delete[] a; 14 15 int a(5); 16 int a ...
- PHP强制转换类型
PHP强制转换类型 获取数据类型 : 1.如果想查看某个表达式的值和类型,用var_dump(). 2.如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype().3.要查看某个类型 ...
- [填坑] ubuntu检测不到外接显示器
笔记本是win10+ubuntu18双系统,今天ubuntu(开启nivida独显状态)突然无法连外接屏幕,但切换win10就可以显示. 贴吧找到的简单解决方法,不需要重装驱动,记录分享在这里: su ...
- spark 源码分析之二十一 -- Task的执行流程
引言 在上两篇文章 spark 源码分析之十九 -- DAG的生成和Stage的划分 和 spark 源码分析之二十 -- Stage的提交 中剖析了Spark的DAG的生成,Stage的划分以及St ...