氧氣中毒 - J2EE

          爪吐奕奕征途
          posts - 24, comments - 10, trackbacks - 0, articles - 0
             :: 首頁 :: 新隨筆 ::  ::  :: 管理

          使用Java編寫oracle存儲過程

          Posted on 2006-06-14 15:00 氧氣中毒 閱讀(1003) 評論(0)  編輯  收藏 所屬分類: 數據處理
          通常我們都使用pl/sql為oracle編寫存儲過程,從oracle?8開始我們可以有另一種選擇:Java。8.0開始,oracle自帶一個jvm,內置對java的支持,任何java能做的事情你都可以放到oracle里面來做,你甚至可以在里面操作db2。這讓oracle具備了極其巨大的擴展能力,只要你愿意,完全可以開發一個trigger,讓它在適當的時候給管理員的msn發送一條即時消息。

          ????好消息說完了,現在是壞消息:由于pl/sql是過程化的語言,它基本上不具備多態的概念,供oracle使用的java方法必須申明為static,所以在oracle中你無法使用java的動態特性,比如接口、反射等。不過這并不妨礙你用java做愛做的事。

          ????我們以一個簡單的hello?world為例,我想任何一個有經驗的java程序員都能夠通過這個例子,派生出其他希奇古怪的應用,有好的創意記得要與我共享,我的msn是chenzhihuang@yahoo.com.cn

          ????首先是創建一個java類,你可以用jbuilder/eclipse來編寫,也可以直接在oracle的控制臺里面創建。前者不多說,看看后一種方式。

          ????啟動sql?plus,執行如下命令:

          1. create?or?replace?and?compile?java?source?named?"hello_sp"?as
          2. /**
          3. ?*創建oracle存儲過程的java類
          4. ?*@author?zhchen
          5. **/
          6. package?org.bromon.oracle;
          7. public?class?Hello
          8. {
          9. ??public?static?String?say(String?name)
          10. ??{
          11. ????return?"你好,"+name;
          12. ??}
          13. }

          Java以創建。

          然后在oracle中把這個類導入成為一個函數,執行命令:
          1. create?or?replace?function?hello_sp(name?varchar2)?return?varchar2
          2. as?language?java?name?
          3. 'org.bromon.oracle.Hello.say(java.lang.String)?return?java.lang.String';


          函數已創建

          現在可以調用該函數,執行:
          1. select?hello('zhchen')?from?dual;


          返回結果:你好,zhchen

          有一個需要注意的問題是,假如我們的java方法是沒有參數的,比如:
          1. public?static?String?say()
          2. ??{
          3. ????return?"你好”;
          4. ??}

          那么在創建函數的時候,函數名不應該有擴號:hello_sp
          否則會報告函數有編譯錯誤。

          如果你的java類是在IDE里面編寫的,那么只需要在oracle中加載編譯過的class文件即可,方法是:

          啟動enterprise?manage?console,在“方案”下找到“源類型”,右擊”java類”,選擇”加載java“,選擇對應的class文件即可。
          主站蜘蛛池模板: 镇平县| 仁布县| 错那县| 静宁县| 吉安市| 邮箱| 大城县| 桂东县| 嘉禾县| 淄博市| 郑州市| 天长市| 峨边| 进贤县| 扬州市| 曲松县| 陆河县| 安塞县| 萨迦县| 正蓝旗| 云浮市| 五峰| 浦江县| 河东区| 潮州市| 碌曲县| 无为县| 年辖:市辖区| 泾源县| 塔河县| 祁门县| 沈阳市| 仙游县| 牡丹江市| 集贤县| 阳城县| 丰原市| 合阳县| 水富县| 宾阳县| 曲周县|