精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在Oracle中使用Java存儲過程(詳解)

開發(fā) 后端 Oracle
其實,這篇短文,我早就應該寫了。因為,Java存儲過程今后在各大數據庫廠商中越來越流行,功能也越來越強大。這里以Oracle為例,介紹一下Java存儲過程的具體用法。

其實,這篇短文,我早就應該寫了。因為,Java存儲過程今后在各大數據庫廠商中越來越流行,功能也越來越強大。這里以Oracle為例,介紹一下java存儲過程的具體用法。

一、如何創(chuàng)建java存儲過程?

通常有三種方法來創(chuàng)建java存儲過程。

1. 使用oracle的sql語句來創(chuàng)建:

e.g. 使用create or replace and compile java source named "<name>" as

后邊跟上java源程序。要求類的方法必須是public static的,才能用于存儲過程。

  1. SQL> create or replace and compile java source named "javademo1" 
  2.   2  as 
  3.   3  import java.sql.*;  
  4.   4  public class JavaDemo1  
  5.   5  {  
  6.   6  public static void main(String[] argv)  
  7.   7  {  
  8.   8  System.out.println("hello, java demo1");  
  9.   9  }  
  10.  10  }  
  11.  11  /  
  12.  
  13. Java 已創(chuàng)建。  
  14.  
  15. SQL> show errors java source "javademo1" 
  16. 沒有錯誤。  
  17.  
  18. SQL> create or replace procedure javademo1  
  19.   2  as 
  20.   3  language java name 'JavaDemo1.main(java.lang.String[])';  
  21.   4  /  
  22.  
  23. 過程已創(chuàng)建。  
  24.  
  25. SQL> set serveroutput on 
  26. SQL> call javademo1();  
  27.  
  28. 調用完成。  
  29.  
  30. SQL> call dbms_java.set_output(5000);  
  31.  
  32. 調用完成。  
  33.  
  34. SQL> call javademo1();  
  35. hello, java demo1  
  36.  
  37. 調用完成。  
  38.  
  39. SQL> call javademo1();  
  40. hello, java demo1  
  41. 調用完成。 

2. 使用外部class文件來裝載創(chuàng)建

e.g. 這里既然用到了外部文件,必然要將class文件放到oracle Server的某一目錄下邊。

  1. public class OracleJavaProc  
  2. {  
  3.     public static void main(String[] argv)  
  4.     {  
  5.         System.out.println("It's a Java Oracle procedure.");  
  6.     }  
  7. }  
  8.  
  9.  
  10. SQL> grant create any directory to scott;  
  11.  
  12. 授權成功。  
  13.  
  14. SQL> conn scott/tiger@iihero.oracledb  
  15. 已連接。  
  16. SQL> create or   replace   directory   test_dir   as  'd:/oracle';  
  17.  
  18. 目錄已創(chuàng)建。  
  19.  
  20. SQL> create or replace java class using bfile(test_dir, 'OracleJavaProc.CLASS')  
  21.   2  /  
  22.  
  23. Java 已創(chuàng)建。  
  24.  
  25. SQL> create or replace procedure testjavaproc as language java name 'OracleJavaProc.main(java.lang.String[])';  
  26.   2  /  
  27.  
  28. 過程已創(chuàng)建。  
  29.  
  30. SQL> call testjavaproc();  
  31.  
  32. 調用完成。  
  33.  
  34. SQL> execute testjavaproc;  
  35.  
  36. PL/SQL 過程已成功完成。  
  37.  
  38. SQL> set serveroutput on size 5000  
  39. SQL> call dbms_java.set_output(5000);  
  40.  
  41. 調用完成。  
  42.  
  43. SQL> execute testjavaproc;  
  44. It's a Java Oracle procedure

3. 我推薦的一種方法,直接使用loadjava命令遠程裝載并創(chuàng)建。
先創(chuàng)建一個類, e.g.

  1. import java.sql.*;  
  2. import oracle.jdbc.*;  
  3.  
  4. public class OracleJavaProc {  
  5.  
  6.    //Add a salgrade to the database.  
  7.    public static void addSalGrade(int grade, int losal, int hisal) {  
  8.  
  9.       System.out.println("Creating new salgrade for EMPLOYEE...");  
  10.  
  11.       try {  
  12.          Connection conn =  
  13.             DriverManager.getConnection("jdbc:default:connection:");  
  14.  
  15.          String sql =  
  16.             "INSERT INTO salgrade " +  
  17.             "(GRADE,LOSAL,HISAL) " +  
  18.             "VALUES(?,?,?)";  
  19.          PreparedStatement pstmt = conn.prepareStatement(sql);  
  20.          pstmt.setInt(1,grade);  
  21.          pstmt.setInt(2,losal);  
  22.          pstmt.setInt(3,hisal);  
  23.          pstmt.executeUpdate();  
  24.          pstmt.close();  
  25.          }  
  26.       catch(SQLException e) {  
  27.          System.err.println("ERROR! Adding Salgrade: "   
  28.            + e.getMessage());  
  29.          }  
  30.    }  

使用loadjava命令將其裝載到服務器端并編譯:

  1. D:eclipse3.1workspacedbtest>loadjava -u scott/tiger@iihero.oracledb -v -resolve Or  
  2. acleJavaProc.java  
  3. arguments: '-u' 'scott/tiger@iihero.oracledb '-v' '-resolve' 'OracleJavaProc.java'  
  4. creating : source OracleJavaProc  
  5. loading  : source OracleJavaProc  
  6. resolving: source OracleJavaProc  

查詢一下狀態(tài):

  1. 連接到:  
  2. Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production  
  3. With the Partitioning, OLAP and Oracle Data Mining options  
  4. JServer Release 9.2.0.1.0 - Production  
  5.  
  6. SQL> SELECT object_name, object_type, status FROM user_objects WHERE object_type LIKE 'JAVA%';  
  7.  
  8. OBJECT_NAME  
  9. --------------------------------------------------------------------------------  
  10.  
  11. OBJECT_TYPE                          STATUS  
  12. ------------------------------------ --------------  
  13. OracleJavaProc  
  14. JAVA CLASS                           VALID  
  15.  
  16. OracleJavaProc  
  17. JAVA SOURCE                          VALID 

測試一下存儲過程:

  1. SQL> create or replace procedure add_salgrade(id number, losal number, hisal num  
  2. ber) as language java name 'OracleJavaProc.addSalGrade(int, int, int)';  
  3.   2  /  
  4.  
  5. 過程已創(chuàng)建。  
  6.  
  7. SQL> set serveroutput on size 2000  
  8. SQL> call dbms_java.set_output(2000);  
  9.  
  10. 調用完成。  
  11.  
  12. SQL> execute add_salgrade(6, 10000, 15000);  
  13. Creating new salgrade for EMPLOYEE...  
  14.  
  15. PL/SQL 過程已成功完成。  
  16.  
  17. SQL> select * from salgrade where grade=6;  
  18.  
  19.      GRADE      LOSAL      HISAL  
  20. ---------- ---------- ----------  
  21.          6      10000      15000 

二、如何更新你已經編寫的java存儲過程?

假如要往類OracleJavaProc里添加一個存儲過程方法,如何開發(fā)?
正確的步驟應該是先dropjava, 改程序,再loadjava。

e.g.修改OracleJavaProc類內容如下:

  1. import java.sql.*;  
  2. import oracle.jdbc.*;  
  3.  
  4. public class OracleJavaProc {  
  5.  
  6.    // Add a salgrade to the database.  
  7.    public static void addSalGrade(int grade, int losal, int hisal) {  
  8.  
  9.       System.out.println("Creating new salgrade for EMPLOYEE...");  
  10.  
  11.       try {  
  12.          Connection conn =  
  13.             DriverManager.getConnection("jdbc:default:connection:");  
  14.  
  15.          String sql =  
  16.             "INSERT INTO salgrade " +  
  17.             "(GRADE,LOSAL,HISAL) " +  
  18.             "VALUES(?,?,?)";  
  19.          PreparedStatement pstmt = conn.prepareStatement(sql);  
  20.          pstmt.setInt(1,grade);  
  21.          pstmt.setInt(2,losal);  
  22.          pstmt.setInt(3,hisal);  
  23.          pstmt.executeUpdate();  
  24.          pstmt.close();  
  25.          }  
  26.       catch(SQLException e) {  
  27.          System.err.println("ERROR! Adding Salgrade: "   
  28.            + e.getMessage());  
  29.          }  
  30.    }  
  31.      
  32.    public static int getHiSal(int grade)  
  33.    {  
  34.     try {  
  35.         Connection conn =  
  36.           DriverManager.getConnection("jdbc:default:connection:");  
  37.         String sql = "SELECT hisal FROM salgrade WHERE grade = ?";  
  38.         PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setInt(1, grade);  
  39.         ResultSet rset = pstmt.executeQuery();  
  40.         int res = 0;  
  41.         if (rset.next())  
  42.         {  
  43.             res = rset.getInt(1);  
  44.         }  
  45.         rset.close();  
  46.         return res;  
  47.        }  
  48.     catch (SQLException e)   
  49.     {  
  50.         System.err.println("ERROR! Querying Salgrade: "   
  51.            + e.getMessage());  
  52.           return -1;  
  53.     }      
  54.    }  
  55.         

如何更新呢?

  1. D:eclipse3.1workspacedbtest>dropjava -u scott -v OracleJavaProc  
  2.  
  3. D:/tiger@iihero.oracledbeclipse3.1workspacedbtest>loadjava -u scott -v -resolve Or 
  4. acleJavaProc/tiger@iihero.oracledb.java  
  5. arguments: '-u' 'scott/tiger@iihero.oracledb' '-v' '-resolve' 'OracleJavaProc.java' 
  6. creating : source OracleJavaProc  
  7. loading  : source OracleJavaProc  
  8. resolving: source OracleJavaProc 

后邊的應用示例:

  1. SQL> create or replace function query_hisal(grade number) return number as langu  
  2. age java name 'OracleJavaProc.getHiSal(int) return int';  
  3.   2  /  
  4.  
  5. 函數已創(chuàng)建。  
  6.  
  7. SQL> set serveroutput on size 2000  
  8. SQL> call dbms_java.set_output(2000);  
  9.  
  10. 調用完成。  
  11. SQL> select query_hisal(5) from dual;  
  12.  
  13. QUERY_HISAL(5)  
  14. --------------  
  15.           9999  

全文完!

用法個人見解:不要手動drop java source, 不要手動drop procedure。

原文鏈接:http://blog.csdn.net/iihero/article/details/2149547

【編輯推薦】

  1. 郵件功能開發(fā):JavaMail
  2. 關于讀寫鎖算法的Java實現及思考
  3. 6個提高Java開發(fā)者效率的工具
  4. Java并發(fā):juc Executor框架詳解
  5. 設計Java應用程序的平滑停止
責任編輯:林師授 來源: iihero的博客
相關推薦

2009-08-04 10:29:06

在C#中使用存儲過程

2009-09-23 13:04:58

HibernateOracle sequ

2009-05-13 10:29:01

存儲過程OracleJava

2011-08-23 09:56:52

UnicodeLua

2009-07-21 14:57:41

iBatis中調用存儲iBatis

2011-04-15 10:56:22

2021-09-10 10:30:22

Java代碼

2023-01-28 17:41:07

Java代碼

2010-11-12 12:01:08

Oracle存儲過程

2010-11-16 14:30:32

Oracle存儲過程

2010-04-16 11:03:02

Oracle存儲過程

2022-06-23 08:00:53

PythonDateTime模塊

2024-01-18 08:37:33

socketasyncio線程

2021-06-09 09:36:18

DjangoElasticSearLinux

2021-03-09 07:27:40

Kafka開源分布式

2015-08-27 09:46:09

swiftAFNetworkin

2022-05-17 08:25:10

TypeScript接口前端

2011-08-10 09:31:41

Hibernateunion

2011-05-17 15:30:27

Oracle數據庫ADO

2010-04-26 10:09:22

Oracle存儲過程
點贊
收藏

51CTO技術棧公眾號

毛片在线视频| 亚洲无码精品在线观看| 欧美美女在线直播| 色噜噜久久综合| 在线电影看在线一区二区三区| 99久久国产热无码精品免费| 亚洲激情社区| 色狠狠久久aa北条麻妃| 日本wwwwwww| a屁视频一区二区三区四区| 一区二区三区色| 日本欧美精品久久久| 亚洲av无码乱码在线观看性色| 久久激情网站| 欧美激情网友自拍| 欧美巨胸大乳hitomi| 久久男人av| 欧美一区二区三区的| 97公开免费视频| 国产桃色电影在线播放| 国产精品久久福利| 日韩一区国产在线观看| 天堂v视频永久在线播放| 国产乱人伦偷精品视频不卡 | 性感女国产在线| 亚洲视频免费在线观看| 日本不卡久久| 日韩中文字幕影院| 国产东北露脸精品视频| 国产一区二区视频在线观看| 久草国产在线观看| 97精品中文字幕| 一区二区三区四区精品| aa片在线观看视频在线播放| 9l视频自拍九色9l视频成人| 制服丝袜日韩国产| 99sesese| 欧美风情在线视频| 欧美午夜精品久久久久久孕妇| 女性女同性aⅴ免费观女性恋| 日本乱理伦在线| 亚洲日本青草视频在线怡红院| 亚洲国产日韩欧美| se在线电影| 中文字幕国产一区二区| 日韩电影大全在线观看| 黄色av网站在线看| 久久这里只有精品6| 久久久久久99| 五月婷婷六月激情| 99国产欧美久久久精品| 精品日本一区二区三区| 特黄视频在线观看| 成人教育av在线| 国产一区在线免费观看| 午夜影院免费体验区| av亚洲精华国产精华| 国产私拍一区| 免费在线视频你懂得| 久久久美女艺术照精彩视频福利播放| 国内不卡一区二区三区| 三级在线观看| 国产欧美日韩不卡免费| 香蕉久久免费影视| 巨大荫蒂视频欧美另类大| 亚洲精品日韩一| 丰满人妻一区二区三区53号 | 亚洲va欧美va天堂v国产综合| 亚洲色成人www永久在线观看| 国产传媒在线| 色成年激情久久综合| 国产精品天天av精麻传媒| 久久麻豆视频| 欧美大片国产精品| 中文字幕丰满孑伦无码专区| 成人一区不卡| 欧美精品亚州精品| 国产成人在线观看网站| 日韩国产在线一| 91久久精品国产91久久| 黄色av免费观看| 国产无人区一区二区三区| 一本色道婷婷久久欧美| 99在线视频影院| 91国在线观看| 三级av免费看| 日本韩国欧美超级黄在线观看| 亚洲一区av在线播放| 久久噜噜色综合一区二区| 亚洲午夜在线| 国产suv精品一区二区三区88区| 国产又粗又猛视频| 成人白浆超碰人人人人| 亚洲图色在线| 女同一区二区免费aⅴ| 色综合天天综合网天天看片| 91 视频免费观看| 欧美一区 二区| 久久精品国产精品| 成人午夜视频精品一区| 久久99蜜桃精品| 久久国产手机看片| 亚洲丝袜精品| 欧美视频一区二区在线观看| 涩视频在线观看| 成人av资源电影网站| 97色在线观看| 精品久久久无码中文字幕| 久久精品亚洲国产奇米99| 欧洲精品视频在线| 99久久精品一区二区成人| 亚洲精品97久久| 青青草原免费观看| 热久久国产精品| 精品亚洲欧美日韩| 欧美hdxxxx| 91精品国产综合久久蜜臀| 久久久久久久久久久久久久久| 欧美视频一区| 成人久久一区二区| www.在线视频.com| 欧美日韩激情视频8区| 乳色吐息在线观看| 99久久99视频只有精品| 国产成人精品一区| 日本天堂在线| 五月婷婷久久丁香| 爱情岛论坛亚洲自拍| 99久久.com| 国产精品一区二区3区| 国产精品99999| 色伊人久久综合中文字幕| 最近中文字幕无免费| 欧美日韩精品免费观看视频完整| 国产精品久久久久久久久男| 五十路在线观看| 狠狠爱在线视频一区| 日韩www视频| 国产精品嫩草99av在线| 国新精品乱码一区二区三区18| 怡红院av在线| 日韩精品一区二区三区中文精品| 日韩不卡av在线| 日韩黄色免费电影| 少妇精品久久久久久久久久| 天然素人一区二区视频| 国产一区二区三区在线免费观看| 亚洲av无码不卡| 国产视频亚洲色图| 少妇高清精品毛片在线视频| 国产成人ay| 国产精品日韩一区| 日本免费在线观看| 5566中文字幕一区二区电影| 国产高潮国产高潮久久久91| 国产成人h网站| 免费毛片网站在线观看| 亚洲aaa级| 国产精品久久久久久婷婷天堂 | 欧美久久精品午夜青青大伊人| 91资源在线视频| 亚洲美女免费在线| 国产一级免费片| 性色一区二区三区| 日韩资源av在线| 亚洲精品tv| 欧美—级高清免费播放| 天天舔天天干天天操| 91久久精品国产91性色tv| 精品视频第一页| 国产传媒欧美日韩成人| 日本福利视频在线| 国精一区二区| 99re在线观看| 超级碰碰久久| 俺去了亚洲欧美日韩| 丰满少妇高潮在线观看| 欧美色视频日本高清在线观看| 免费看91的网站| 国产一区二区三区香蕉| 777777av| 青青草综合网| 国产日韩一区欧美| 久久亚洲国产精品尤物| 欧美精品久久一区二区| 毛片在线免费| 91精品综合久久久久久| 91av在线免费视频| 中文字幕色av一区二区三区| 亚洲天堂2024| 精品写真视频在线观看| 春日野结衣av| 牛夜精品久久久久久久99黑人| 久久久久se| 日韩成人在线看| 国产99久久久欧美黑人| 国产www视频在线观看| 一区二区三区黄色| 欧美熟妇另类久久久久久不卡| 在线观看中文字幕不卡| 日韩xxxxxxxxx| 国产精品第13页| 国产精品无码午夜福利| 国产精品一区二区免费不卡| 国产三级日本三级在线播放| 欧美日本一区| 一区二区三区国产福利| 一本色道久久综合亚洲精品酒店| 91香蕉电影院| 国产原创一区| 久久久久久欧美| 调教视频免费在线观看| 亚洲欧美国产制服动漫| 日本高清视频在线| 欧美成人精精品一区二区频| 一级特黄色大片| 91久久国产最好的精华液| 日韩无码精品一区二区三区| 亚洲精品久久嫩草网站秘色| 中国1级黄色片| 久久久久久久久久电影| 久久国产精品一区二区三区| 色999久久久精品人人澡69 | www成人免费| 911久久香蕉国产线看观看| 四虎影视永久免费在线观看一区二区三区| 日韩精品丝袜美腿| 狠狠色伊人亚洲综合网站色| 成功精品影院| 风间由美一区二区三区| 日韩在线网址| 成人资源视频网站免费| 久久伊人精品| 成人久久18免费网站漫画| 成人51免费| 91免费的视频在线播放| 久久久精品区| 亚洲综合在线小说| 涩爱av色老久久精品偷偷鲁| 亚洲一区二区三区视频| 精品一区91| 97夜夜澡人人双人人人喊| 香蕉免费一区二区三区在线观看| 亚洲影院色无极综合| 精品视频一区二区三区在线观看| 成人性生交xxxxx网站| 精品一区二区三区亚洲| www 成人av com| 77成人影视| 国产中文一区二区| 国产成人手机高清在线观看网站| 欧洲亚洲一区| 日韩免费一区| 日韩中文在线字幕| 欧美私人啪啪vps| 国产3p露脸普通话对白| av无码精品一区二区三区宅噜噜| 亚洲免费观看高清完整版在线观看| www.av免费| 亚洲黄色免费网站| 久久综合色综合| 精品久久久精品| 波多野结衣爱爱| 欧美日韩免费一区二区三区| 国产日产亚洲系列最新| 精品国产一区二区三区忘忧草| 天堂网2014av| 亚洲日韩第一页| 免费a级人成a大片在线观看| 九九视频这里只有精品| 免费在线小视频| 国产精品自产拍在线观看| 欧美黄视频在线观看| 久久亚洲国产精品日日av夜夜| 欧美伦理影院| bt天堂新版中文在线地址| 女同性一区二区三区人了人一| 国产精品国三级国产av| 久久一区欧美| 久久久福利影院| 91啪亚洲精品| 日本裸体美女视频| 亚洲va在线va天堂| 91久久久久国产一区二区| 精品国产乱码久久久久久浪潮| 国产在线视频福利| 欧美黑人狂野猛交老妇| 日韩精品一区二区三区av| 不卡一区二区三区视频| 精品久久影院| www.日本少妇| 美腿丝袜在线亚洲一区| 伊人久久一区二区三区| 亚洲欧美怡红院| 超碰超碰超碰超碰| 精品国精品国产尤物美女| 国产高清视频在线播放| 欧美精品精品精品精品免费| 欧美在线se| 免费在线成人av电影| 欧美日本不卡高清| 国内自拍视频网| av成人老司机| 久久久久久久久久久久久久免费看 | 免费中文字幕视频| 欧美亚洲综合在线| 四季av日韩精品一区| 久久国产色av| 老司机精品视频网| 欧美午夜精品久久久久久蜜| 国产精品草草| 日本精品一区在线| 中文字幕二三区不卡| 国产小视频在线免费观看| 日韩午夜在线播放| 三级影片在线看| 精品一区二区三区香蕉蜜桃| 91性高潮久久久久久久| 中文天堂在线一区| www.久久精品视频| 亚洲精品久久久久久久久久久久 | 香蕉久久一区二区不卡无毒影院 | 欧美videos粗暴| 欧美综合激情| 亚洲欧美日本日韩| 人妻在线日韩免费视频| 亚洲国产精品一区二区久久恐怖片| 国产一区二区在线不卡| 日韩在线激情视频| 精品女同一区二区三区在线观看| 欧美高清视频一区| 亚欧成人精品| 成人免费无遮挡无码黄漫视频| 午夜精品福利在线| 三级视频在线看| 午夜欧美不卡精品aaaaa| 超碰精品在线观看| 欧美成人高潮一二区在线看| 不卡视频在线观看| 久久精品国产亚洲av麻豆色欲| 日韩三级av在线播放| 欧美黑人xx片| 国产乱码一区| 亚洲神马久久| 精品无码一区二区三区| 一本色道久久综合狠狠躁的推荐| 欧美日韩国产中文字幕在线| 日韩av大片免费看| 成人免费av| 国产永久免费网站| 一区二区三区中文字幕| 日韩中文字幕影院| 日本精品在线视频| 欧美日韩国产在线观看网站| 色婷婷狠狠18| 亚洲欧美另类久久久精品2019| 精品国产99久久久久久宅男i| 欧美日韩成人黄色| 欧美色资源站| 成人精品小视频| 最新久久zyz资源站| 亚洲精品国产精| 538国产精品一区二区在线| 免费精品国产| 日本在线观看视频一区| 亚洲线精品一区二区三区八戒| 天天躁日日躁狠狠躁喷水| 国产激情999| 一区二区三区网站| 国产又粗又猛又色| 色美美综合视频| av在线免费网站| 久久国产精品亚洲va麻豆| 奇米色一区二区| 久久伊人成人网| 亚洲一区二区久久| 欧美区一区二区| 久久精品99国产| 亚洲色图清纯唯美| 婷婷亚洲一区二区三区| 成人免费看片视频| 狠狠人妻久久久久久综合麻豆| 久久中文字幕国产| 人人网欧美视频| 中文字幕在线观看日| 五月婷婷欧美视频| 国内精品不卡| 精品一区二区三区自拍图片区 | 巨大荫蒂视频欧美另类大| 国产亚洲欧美另类一区二区三区| 日本不卡一二三区黄网| 精品一区二区三区人妻| 综合网中文字幕| 久久精品福利| 色91精品久久久久久久久| 亚洲成av人片在www色猫咪| 日本中文字幕在线2020| 久久草视频在线看| 国产传媒久久文化传媒| 亚洲性生活大片|