通常我們都使用 ps/ sql 為 oracle 編寫存儲過程,從 oracle 8 開始我們可以有另一種選擇: Java 。 8.0 開始, oracle 自帶一個 jvm ,內置對 java 的支持,任何 java 能做的事情你都可以放到 oracle 里面來做,你甚至可以在里" name="description" />

java基礎-用Java編寫oracle存儲過程

發表于:2007-05-25來源:作者:點擊數: 標簽:javaoracle存儲編寫基礎
MI LY: 宋體" twffan="done">通常我們都使用 ps/ sql 為 oracle 編寫存儲過程,從 oracle 8 開始我們可以有另一種選擇: Java 。 8.0 開始, oracle 自帶一個 jvm ,內置對 java 的支持,任何 java 能做的事情你都可以放到 oracle 里面來做,你甚至可以在里
   MILY: 宋體" twffan="done">通常我們都使用ps/sqloracle編寫存儲過程,從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程序員都能夠通過這個例子,派生出其他希奇古怪的應用。

     首先是創建一個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文件即可。

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97