`
tangbo645
  • 浏览: 19301 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类

用Java编写Oracle存储过程

阅读更多

<!----><!----> 

<!----> 

1 介绍

Oracle 里可以使用多种语言来编写存储过程,比如 Pro*C/C++,PL/SQL,COBOL, Oracle8i 开始支持用 Java 编写存储过程。

 

如果非要写存储过程的话,做为以 Java 谋生的我,首选用 Java 编写,用 PL/SQL 需要记忆很多的语法 (Pascal 类的语法 ) 和函数,远不如使用 Java/JDBC 这么轻车熟路。而且, DB2 等数据库都支持 Java 存储过程,所以不比为每一种数据学习一种编写存储过程的方法了。

 

Java 存储过程与一般的 JDBC 程序有所不同的是:

1. 有安全限制,毕竟是在 oracle 内部运行的,不允许访问操作系统的资源,如文件。

2. 获取数据库联接方式, connection = new OracleDriver().defaultConnection();

3.System.out,System.err,System.in 等输入输出有所不同。可以利用某些命令重定向。

 

2 例子

下面用Java 存储过程写一个例子。

2.1 JavaSource

plsqldeveloper 里,java source 里增加一个TestJava 类,

Java 代码

create or replace and compile java source named TestJava as

public class TestJava {

 

    public static void test(String xm) {

       System. out .println( " 姓名 :" +xm);

    }

   

    public static String message(String xm) {

       return "Hello, " + xm;

    }

 

}

create or replace and compile java source named TestJava1 as

public class TestJava1

{

  public static void test()

  {

   System.out.println("Hello");

  }

}

执行它,以保存并编译。

2.2 Procedure

1.TestPro

create or replace procedure TestPro(xm in varchar2 ) as language java name 'TestJava.test(java.lang.String)' ;

create or replace procedure testJava1 as language java name 'TestJava1.test()';

 

2. command window 里输入

SET SERVEROUTPUT ON;

CALL dbms_java.set_output(2000);  

以使 System.out 重定向到当前窗口 ;

command window 里输入, exec testpro(‘111’);

即可看到结果:

  姓名 :111

PL/SQL procedure successfully completed

 

 

2.3 Function

1.TestFuc

create or replace function TestFuc(xm in varchar2 ) return VARCHAR2 as language java name 'TestJava.message(java.lang.String) return java.lang.String' ;

 

2. 调用

Select testfuc(‘ 娃哈哈 ’) from dual;

显示结果 :

Hello, 娃哈哈

 

3 Oracle Socket 通信

3.1 授权

-- 授权 , 用户必须大写

exec dbms_java.grant_permission('TEST','SYS:java.util.PropertyPermission', '*', 'read,write' );

exec dbms_java.grant_permission('TEST','SYS:java.net.SocketPermission','*','connect,resolve');

 

3.2 数据库连接

/**

      * 数据库连接 ( 默认 )

      * @return Connection

      * @throws SQLException

      */

    public static Connection getConnection() throws SQLException {

       Connection con = null ;

       con = new OracleDriver().defaultConnection();

 

       return con;

    }

 

    /**

      * 数据库连接

      * @param driverClassName

      * @param url

      * @param user

      * @param password

      * @return Connection

      * @throws ClassNotFoundException

      * @throws SQLException

      */

    public static Connection getConnection(String driverClassName, String url, String user, String password) throws ClassNotFoundException, SQLException {

       Connection con = null ;

       Class.forName (driverClassName);

       Properties info = System.getProperties ();

       info.put( "user" , user);

       info.put( "password" , password);

       con = DriverManager .getConnection (url, info);

 

       return con;

    }

4 参考资料

Oracle® Database Java Developer's Guide

http://download-west.oracle.com/docs/cd/B19306_01/java.102/b14187/toc.htm

 

Sample:

http://www.oracle.com/technology/sample_code/tech/java/jsp/oracle9ijsp.html

 

 

分享到:
评论

相关推荐

    使用Java编写Oracle存储过程.pdf

    在介绍使用Java编写Oracle存储过程之前,我们首先需要了解存储过程的基本概念以及使用它们的好处。存储过程是存储在数据库中的一段预编译和优化过的代码,可以包含复杂的业务逻辑。它们在第一次执行后被编译并存储在...

    java 与 oracle 存储过程

    Java与Oracle存储过程是数据库应用开发中的重要技术结合,它们在企业级系统中广泛使用,尤其是在数据处理和业务逻辑复杂的场景下。Oracle存储过程是一种在数据库服务器端编写的程序,可以包含一系列SQL语句和控制流...

    用Java编写Oracle数据库存储过程

    下面将详细探讨如何用Java编写Oracle数据库存储过程,以及相关的知识点。 首先,我们需要了解Oracle的Java存根(Java Stubs)和Java源代码存储。Java存根是Oracle数据库中的一个对象,它代表了Java方法,而Java源...

    java编写oracle的存储过程,为什么调用System.in阻塞IO时不起作用?还报错?

    在Java编程中,Oracle存储过程的调用与标准输入(System.in)的交互可能会遇到一些问题,特别是当尝试使用System.in进行阻塞IO操作时。这个问题通常涉及到Java的多线程概念、I/O流的处理以及Oracle存储过程的执行...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    我们将首先编写 Oracle 存储过程,然后编写 Java 代码使用 Spring JdbcTemplate 调用这些存储过程。 Oracle 存储过程 首先,我们编写了两个 Oracle 存储过程:`P_EMP_SELECT` 和 `P_EMP_ADD`。 `P_EMP_SELECT` ...

    JAVA-ORACLE存储过程

    `ORACLE存储过程.txt`可能包含了存储过程的创建和使用示例,可以帮助读者理解存储过程的编写和功能。至于`dbman`,可能是数据库管理工具,用于创建、修改或查看数据库对象,包括存储过程。 学习这部分内容对于Java...

    java调用Oracle存储过程

    在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或数据操作时。本文将深入探讨如何使用Java与...记住,实践是最好的老师,尝试编写一个简单的Java程序来调用Oracle存储过程,加深理解。

    java Oracle存储过程分页整理

    本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    存储过程可以由多种语言编写,例如 PL/SQL、Java 等。存储过程可以封装复杂的业务逻辑,提高数据库的安全性和性能。 二、CallabledStatement 介绍 CallabledStatement 是 Java 中的一种接口,用于调用存储过程。...

    项目里用到用java写oracle的存储过程,做个备份

    本项目中,我们将探讨如何利用Java来编写Oracle存储过程,以实现数据库的备份功能。 首先,Oracle存储过程是一种预编译的SQL和PL/SQL代码集合,可以执行特定任务,如数据处理、业务逻辑等。通过Java调用存储过程,...

    java调用oracle存储过程实现增删改查

    本文将详细介绍如何在Java中实现对Oracle存储过程的调用,以执行增删改查(CRUD)操作。 首先,确保你已安装了Oracle JDBC驱动(如ojdbc.jar),并将它添加到Java项目的类路径中。Oracle JDBC驱动提供了与Oracle...

    java调用oracle存储过程并得到结果集

    在MyEclipse中,你可以创建一个Java项目,编写以上代码,并运行它来测试对Oracle存储过程的调用。记得根据实际的数据库配置和存储过程名称进行调整。 通过这种方式,Java开发者可以有效地利用Oracle数据库的强大...

    java调用oracle存储过程

    总的来说,Java调用Oracle存储过程主要依赖于`CallableStatement`接口,它允许我们定义输入参数、输出参数以及输入/输出参数,并且可以处理存储过程的返回值。在处理返回值时,需要根据存储过程的返回类型选择合适的...

    springboot整合mybatis调用oracle存储过程

    本文将深入探讨如何在Spring Boot项目中整合MyBatis,实现调用Oracle存储过程并处理游标返回的数据。 首先,我们需要在Spring Boot项目中引入相关的依赖。在`pom.xml`文件中添加Oracle JDBC驱动(ojdbc66-oracle...

    oracle存储过程教程

    因此,掌握Oracle存储过程的使用对于Java开发者来说是非常重要的。 在提供的“oracle存储过程教程@www.java1234.com.pdf”文件中,你可能会深入学习到这些概念和实践技巧,包括但不限于存储过程的创建、调用、参数...

    Oracle 存储过程JAVA调用存储过程 游标使用

    这篇博客可能详细讨论了如何在Java中与Oracle存储过程交互,特别是涉及到了游标的使用。 首先,让我们理解存储过程的概念。存储过程是一组预先编译的SQL语句,可以接受参数,执行复杂操作,然后返回结果。在Oracle...

    在Oracle8i中使用java编写存储过程.rar

    文档“在Oracle8i中使用java编写存储过程.doc”可能会详细讲解这些步骤,并提供实际示例代码。它可能还会讨论一些高级主题,如异常处理、参数传递、结果集处理以及如何优化Java存储过程的性能。 此外,使用Java编写...

Global site tag (gtag.js) - Google Analytics