`
chenhua_1984
  • 浏览: 1255542 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

使用Java编写oracle存储过程

阅读更多

       使用Java编写oracle存储过程

 bromon原创 请尊重版权

 

         通常我们都使用ps/sql为oracle编写存储过程,从oracle 8开始我们可以有另一种选择:Java。8.0开始,oracle自带一个 jvm,内置对java的支持,任何java能做的事情你都可以放到oracle里面来做,你甚至可以在里面操作db2。这让oracle具备了极其巨大 的扩展能力,只要你愿意,完全可以开发一个trigger,让它在适当的时候给管理员的msn发送一条即时消息。

    好消息说完了,现在是坏消息:由于ps/sql是过程化的语言,它基本上不具备多态的概念,供oracle使用的java方法必须申明为static,所以在oracle中你无法使用java的动态特性,比如接口、反射等。不过这并不妨碍你用java做爱做的事。

    我们以一个简单的hello world为例,我想任何一个有经验的java程序员都能够通过这个例子,派生出其他希奇古怪的应用,有好的创意记得要与我共享,我的msn是bromon@gmail.com

    首先是创建一个java类,你可以用jbuilder/eclipse来编写,也可以直接在oracle的控制台里面创建。前者不多说,看看后一种方式。

    启动sql plus,执行如下命令:

# create or replace and compile java source named "hello_sp" as
# /**
#  *创建oracle存储过程的java类
#  *@author bromon
# **/
# package org.bromon.oracle;
# public class Hello
# {
#   public static String say(String name)
#   {
#     return "你好,"+name;
#   }
# } 
 

Java以创建。

然后在oracle中把这个类导入成为一个函数,执行命令:

# create or replace function hello_sp(name varchar2) return varchar2
# as language java name 
# 'org.bromon.oracle.Hello.say(java.lang.String) return java.lang.String'; 

 函数已创建

现在可以调用该函数,执行:

select hello('bromon') from dual; 

 返回结果:你好,bromon

有一个需要注意的问题是,假如我们的java方法是没有参数的,比如:

.

# public static String say()
#   {
#     return "你好”;
#   } 

 那么在创建函数的时候,函数名不应该有扩号:hello_sp
否则会报告函数有编译错误。

如果你的java类是在IDE里面编写的,那么只需要在oracle中加载编译过的class文件即可,方法是:

启动enterprise manage console,在“方案”下找到“源类型”,右击”java类”,选择”加载java“,选择对应的class文件即可。

 

分享到:
评论

相关推荐

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

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

    java 与 oracle 存储过程

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

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

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

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

    以上就是使用Java编写Oracle数据库存储过程的基本步骤。需要注意的是,为了保证安全性,你需要对Java代码进行适当的权限控制,并确保Java代码在数据库环境中正确运行。此外,Java存储过程可能涉及到性能问题,因为...

    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存储过程的调用,以执行增删改查(CRUD)操作。 首先,确保你已安装了Oracle JDBC驱动(如ojdbc.jar),并将它添加到Java项目的类路径中。Oracle JDBC驱动提供了与Oracle...

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

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

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

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

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

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

    springboot整合mybatis调用oracle存储过程

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

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

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

    oracle存储过程教程

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

    java调用oracle存储过程

    调用Oracle存储过程时,我们使用`java.sql.CallableStatement`对象。它继承自PreparedStatement,专为调用数据库存储过程而设计。下面是如何设置和执行存储过程的代码: ```java CallableStatement cs = conn....

Global site tag (gtag.js) - Google Analytics