· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [推荐] 江民安全专家永久免费 立即下载  RSA 2010
· [专题] 谷歌遭黑客攻击事件 2010网页挂马爆发之年
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 《拆弹部队》藏木马 看Xbox360与PS3背后秘密
· [热点] 报告:PDF漏洞远超微软 十款免费电子邮件程序

菜鸟课堂:使用Java编写Oracle存储过程

发布时间:2009.05.14 05:04     来源:bromon    作者: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是

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

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

create or replace and compile java source named "hello_sp" as

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文件即可。

(责任编辑:董建伟)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 细化解析:Oracle数据库的四种启动方式 (05-12) · oracle数据库在Linux系统下的安装与配置 (05-12)
· 如何对系统默认的约束名和索引名重命名 (05-11) · 如何处理Oracle中TEMP表空间满的问题 (05-11)
· 对系统默认的约束名和索引名进行重命名 (05-11) · 灵活应用Oracle数据查询时经常用到的关联 (05-11)
· Java进阶:在Java中应用设计模式Singleton (05-11) · 敢比就是赢 我看U9 PK SAP/Oracle (05-07)
· 利用 WAS CE v2.1 创建基于 JMS 的应用 (05-07) · 基于 jsTree 的无限级树JSON数据的转换 (05-06)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
3.15赛迪网特别策划:消费者不是消“废”者
·专题:惠普栽在3.15前..
·深度观察:中国新能源汽..
·焦点解读:纯电动汽车能..
专题:三网融合 看起来很美!
·专题:动力100——助企..
·专题:三大运营商"扎堆"..
·专题:谷歌推智能手机Ne..
专题:回顾2009 原装耗材与兼容耗材发展
·专题:HP Photosmart Pl..
·专题:超薄超强 戴尔推..
·2009赛迪网年终评选 惠..
专题:RSA 2010信息安全大会
·专题:谷歌遭黑客攻击事..
·无处不挂马 2010年网页..
·龙存科技:由BizSpark成..