`

PL/SQL开发 触发器调用java程序

阅读更多

1、创建java程序

create or replace and compile java source named sms as

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

 

public class SMS

{

  public static String entry(String id)

  {

         String datas = "d:\\oracleFile\\oracle.txt";

        File data = new File(datas);

        StringBuffer backup = null;

        try {

          StringBuffer content = new StringBuffer();

          backup = new StringBuffer();

          BufferedReader san = new BufferedReader(new FileReader(data));

          String line = null;

          while ((line = san.readLine()) != null) {

            backup.append(line);

            backup.append("/n");

          }

          content.append("15 ");

          content.append(" oracle.txt");

          content.append("/n");

 

          content.append(id);

 

          FileWriter writer = new FileWriter(data, false);

          writer.write(content.toString());

          writer.flush();

 

        } catch (FileNotFoundException e) {

          e.printStackTrace();

        } catch (IOException e) {

          try {

            FileWriter writer = new FileWriter(data, false);

            writer.write(backup.toString());

            writer.flush();

        } catch (Exception ex) {

          ex.printStackTrace();

        }

      }

      return id +="OK";    

  }

}

2、创建触发器

CREATE OR REPLACE TRIGGER LOADING_TRIGGER

  AFTER INSERT OR UPDATE OR DELETE ON LOADCHANG_MAIN

  FOR EACH ROW

DECLARE

  OPT1 VARCHAR2(50);

BEGIN

  IF INSERTING THEN

    OPT1 := 'INSERT';

  ELSIF UPDATING THEN

    OPT1 := 'UPDATE';

  ELSIF DELETING THEN

    OPT1 := 'DELETE';

  ELSE

    OPT1 := 'UNKNOWN';

  END IF;

    DBMS_OUTPUT.PUT_LINE(TESTFUN(OPT1));

END LOADING_TRIGGER;

3、创建函数

CREATE OR REPLACE FUNCTION testFun(file in varchar2) return varchar2

AS LANGUAGE JAVA NAME 'SMS.entry(java.lang.String) return java.lang.String';

4、以管理员身份登陆数据库

由于要读写文件,需要对数据库用户进行文件读写授权,因此需要以管理员身份登陆数据库对用户授权

begin

dbms_java.grant_permission('GLMF','SYS:java.io.FilePermission','d:\oracleFile\*','read,write,delete');

end;

对GLMF用户授权可对D盘oracleFile文件夹下的所有文件及文件夹进行读写删除操作。

 

 ----------------------------------------8******************************************

加载java文件到数据库中,首先登陆到数据库服务器

1)加载jar到oracle数据库中

loadjava -r -f -verbose -resolve -user xmlbook/xmlbook xmlparserv2.jar

2)加载class到oracle数据库中

loadjava -r -f  -user user_name/password[@URL] oracle/AAA/bbb/CCC.class

3)移除

dropjava -r -f  -user user_name/password[@URL] [option_list] file_list

*******************************************************************************

create or replace and compile java source named send_sms as

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

 

public class SEND_SMS

{

 

  public static String entry(String mobile,String content)

  {

     String result = "false";

     try 

     {

 result = readContentFromGet("mobile="+mobile+"&message="+URLEncoder.encode(content,"utf-8"));

 } 

      catch (UnsupportedEncodingException e) 

      {

 e.printStackTrace();

       }   

       return result;

  }

  

  public static String readContentFromGet(String parm) {

String getURL = "http://IP:PORT/api/sms/send.ashx?appid=sunisco-shared&" + parm;

HttpURLConnection connection = null;

    String res = "false";

try{

URL getUrl = new URL(getURL);

connection = (HttpURLConnection) getUrl.openConnection();

connection.connect();

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));

      String lines;

while ((lines = reader.readLine()) != null) {

res = lines;

}

reader.close();

}catch(Exception e){

e.printStackTrace();

}finally{

if(connection != null){

connection.disconnect();

}

}

    return res;

}

 

}

 

 

 

 

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

分享到:
评论

相关推荐

    Oracle Database 12c PL/SQL开发指南 实例源代码

    14. **PL/SQL与Java集成**:通过PL/SQL调用Java存储过程,实现两种技术的融合。 通过"Oracle Database 12c PL/SQL开发指南"中的实例源代码,读者可以亲手实践上述各种概念和技术,从而更深入地理解和掌握PL/SQL的...

    PL/SQL开发文档1

    标题中提到的“PL/SQL开发文档1”,说明本文档是关于PL/SQL开发的入门级指导材料,面向希望学习使用PL/SQL进行数据库程序单元开发的用户。文档很可能是Oracle公司内部或其授权的培训机构用于教学目的的官方材料。 ...

    pl/sql最新中文手册

    11. **PL/SQL与Java、C等其他语言的互操作性**:Oracle提供了与多种编程语言接口的机制,手册会讲解如何在PL/SQL中调用外部程序或被其他程序调用。 12. **调试和错误诊断**:最后,手册会介绍如何使用Oracle提供的...

    oracle 9i pl/sql程序设计笔记

    ### Oracle 9i PL/SQL程序设计笔记精要 ...掌握PL/SQL的不同块类型及其使用方法对于开发高效、可靠的数据库应用程序至关重要。此外,熟悉存储过程和触发器的创建与使用,将有助于提升应用程序的性能和数据安全性。

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    pl/sql developer11.0

    PL/SQL Developer是一款由Allround Automations公司开发的专业Oracle数据库开发工具,专为编写、调试、测试和管理PL/SQL代码而设计。标题中的“pl/sql developer11.0”指的是该软件的第11个主要版本。在本文中,我们...

    pl/sql开发工具

    2. **调试功能**:PL/SQL Developer提供了强大的调试工具,包括设置断点、单步执行、查看变量值、调用堆栈跟踪等,帮助开发者定位和修复程序中的问题。 3. **数据库对象管理**:你可以通过工具直接创建、修改和删除...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    oracle pl/sql从入门到精通 配套源代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...

    pl/sql程序设计ppt

    它是SQL的扩展,增加了程序化组件,使得开发人员能够编写存储过程、函数、触发器和包等复杂逻辑。下面将详细阐述PL/SQL的基本程序结构及其在过程、函数、触发器和包中的应用。 1. PL/SQL基本程序结构 PL/SQL程序由...

    PL/SQL 基本知识

    PL/SQL是Oracle数据库系统中的一个核心组件,全称为“Procedural Language/Structured Query Language”,它是SQL的扩展,增加了编程元素,使得开发者能够编写存储过程、函数、触发器等数据库应用程序。这篇博客主要...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    1. **PL/SQL基础**:涵盖PL/SQL的基本语法,包括变量声明、常量定义、条件语句(IF-THEN-ELSIF-ELSE)、循环结构(WHILE, FOR)、异常处理(BEGIN-EXCEPTION-END)以及子程序(PROCEDURE和FUNCTION)的创建与调用。...

    pl/sql 免安装,绿色版pl/sql

    PL/SQL Developer是一款高效、便捷的Oracle数据库管理工具,尤其适合DBA和开发人员使用。免安装的绿色版PL/SQL Developer使得用户无需经历复杂的安装过程,只需解压即可使用,大大简化了软件部署,方便在不同的...

    PL/SQL编程基础知识

    作为Oracle数据库的核心组成部分之一,PL/SQL在数据库应用程序开发中扮演着至关重要的角色。 **1.1 PL/SQL可用的SQL语句** 在PL/SQL环境中可以使用的SQL语句主要包括以下几种: - **INSERT**:用于向表中插入新...

    PL/SQL下载

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种结合了SQL语言与过程编程的语言,专为数据库管理和应用程序开发设计。PL/SQL全称为“Procedural Language/Structured Query Language”,它提供了丰富的控制...

    PL/SQL doc 文件

    * 块可以被命名和存储在 ORACLE 服务器中,同时也能被其他的 PL/SQL 程序或 SQL 命令调用,任何客户/服务器工具都能访问 PL/SQL 程序,具有很好的可重用性。 * 可以使用 ORACLE 数据工具管理存储在服务器中的 PL/SQL...

    PL/SQL 详解

    这意味着开发者可以在客户端直接调用PL/SQL代码,也可以通过客户端向服务器发送SQL命令或者触发服务器端的PL/SQL程序执行,极大地提高了开发效率和用户体验。 **1.2.3 过程化** PL/SQL是一种过程化语言,这意味着...

    PL/SQL基础编程,实例自写

    6. **兼容性**:PL/SQL可以与多种开发工具和编程语言(如Java、C#)协同工作,增强了其适用范围。 #### 三、PL/SQL的结构与组成部分 PL/SQL程序的基本结构由三个部分组成: 1. **声明部分(DECLARE)**:定义变量、...

    PL/SQL7.5开发工具

    在Java开发环境中,PL/SQL 7.5开发工具可以作为辅助工具,特别是在需要与Oracle数据库进行交互的项目中。Java开发者可以通过JDBC(Java Database Connectivity)接口调用PL/SQL编写的存储过程,实现高效的数据处理和...

    ORALCE PL/SQL程序设计第五版

    10. **数据库连接和调用接口**:PL/SQL可以与其他编程语言(如Java、C++)交互,通过Oracle Call Interface (OCI)或JDBC调用PL/SQL过程,实现跨平台的数据访问和处理。 通过《ORACLE PL/SQL程序设计第五版》,你将...

Global site tag (gtag.js) - Google Analytics