精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

97久久超碰福利国产精品…| 欧美一区二区三区播放老司机| 日韩av日韩在线观看| 国产成人av一区二区三区不卡| caoprom在线| 99久久国产综合色|国产精品| 欧美老女人xx| 免费a在线观看播放| 主播大秀视频在线观看一区二区| 久久蜜桃香蕉精品一区二区三区| 97婷婷涩涩精品一区| 亚洲成人福利视频| 午夜精品成人av| 亚洲色图视频网| 91欧美精品午夜性色福利在线| 午夜黄色福利视频| 成人自拍在线| 欧美午夜精品理论片a级按摩| 日本免费高清一区二区| 99精品在线视频观看| 自拍偷拍欧美| 亚洲欧美国产va在线影院| 亚洲精品免费一区亚洲精品免费精品一区 | 中文字幕制服丝袜一区二区三区| 国产精品吴梦梦| 无码人妻丰满熟妇啪啪欧美| 亚洲精品福利| 欧美日韩国产不卡| 男人亚洲天堂网| 成人在线免费公开观看视频| 国产成人av电影在线| 国产精品爽爽爽| 中文字幕国产在线观看| 极品中文字幕一区| 欧美成人合集magnet| 久久午夜精品视频| 国产欧美高清视频在线| 欧美日本精品一区二区三区| 干日本少妇首页| 99精品老司机免费视频| 91色|porny| 国产精品传媒毛片三区| 国产男女猛烈无遮挡| 免费高清在线视频一区·| 日韩美女福利视频| 国语对白永久免费| 国产精品最新自拍| 97在线视频一区| 我想看黄色大片| 国产videos久久| 日韩久久免费电影| 91福利在线免费| 1024亚洲合集| 一区二区三区四区欧美| www.亚洲视频| 国产欧美视频一区二区| 国产精自产拍久久久久久| 中文字幕激情小说| 老鸭窝毛片一区二区三区| 亚洲3p在线观看| 日韩 欧美 精品| 国产一级久久| 日韩美女视频免费在线观看| 中文字幕黄色片| 日韩精品色哟哟| 国产成人自拍视频在线观看| 一级一片免费看| 日韩成人dvd| 国产色视频一区| 日韩免费视频一区二区视频在线观看| 久久国产电影| 亚洲精品久久视频| 麻豆国产精品一区| 国产成人一区| 日韩在线视频线视频免费网站| 无码人妻aⅴ一区二区三区| 亚洲福利网站| 中文字幕在线日韩| 欧美图片第一页| 成人区精品一区二区婷婷| 色综合影院在线| 久草视频免费在线| 日韩一级欧洲| 国产精品嫩草视频| 国产国语亲子伦亲子| 老司机精品视频一区二区三区| 77777亚洲午夜久久多人| 欧美三级午夜理伦| 免费高清在线一区| 国产精品美女诱惑| 国产精品一区二区婷婷| 亚洲人成精品久久久久| 黄色大片中文字幕| 久久xxx视频| 欧美xxxxx牲另类人与| 国产特黄级aaaaa片免| 婷婷久久一区| 97在线视频一区| 夜夜嗨aⅴ一区二区三区| 成人在线视频一区| 亚洲午夜激情| 色网在线免费观看| 在线不卡欧美精品一区二区三区| 69久久久久久| 51vv免费精品视频一区二区 | 伊人网站在线观看| 国产白丝精品91爽爽久久| 亚洲最大福利网站| 国产粉嫩一区二区三区在线观看| 久久免费美女视频| 777久久精品一区二区三区无码| 大片免费在线观看| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 国产一线二线三线在线观看| 国产精品久久久久久av公交车| 8v天堂国产在线一区二区| 亚洲一区二区在线免费| 日韩久久精品| 欧美性资源免费| 草草视频在线播放| 国产精品污网站| 免费成人午夜视频| 搜成人激情视频| 欧美精品一区二区三区视频| 久久精品色妇熟妇丰满人妻| 国产亚洲一级| 国产精品扒开腿做爽爽爽男男| 无码人妻av免费一区二区三区 | 日本不卡一区二区三区四区| 成人影院网站| 亚洲护士老师的毛茸茸最新章节| 国产福利在线观看视频| 一区二区三区网站| 成人网中文字幕| aiai在线| 91成人看片片| 亚洲中文字幕一区| 少妇久久久久| 欧美激情网友自拍| 亚洲AV无码乱码国产精品牛牛| 91丨porny丨国产入口| 国产日韩亚洲欧美在线| 999久久久精品一区二区| 尤物精品国产第一福利三区| 中文字幕黄色片| 国产高清久久久| 中国成人亚色综合网站 | 久久久另类综合| 久久人人爽人人爽人人av| 老司机2019福利精品视频导航| 欧美久久高跟鞋激| 日本一卡二卡在线播放| 视频在线观看一区| 国产精品国产三级欧美二区| 欧美日韩色网| 欧美xxxx在线观看| 国产香蕉在线视频| 99国产精品久久久久久久久久| 亚洲精品成人自拍| 成人自拍视频网| 亚洲精品国产美女| www.av麻豆| 2021中文字幕一区亚洲| 国产精品97在线| 国产99亚洲| 国产精品免费一区| 国产区在线观看| 精品久久久久一区| 日韩伦人妻无码| 久久午夜羞羞影院免费观看| 国产成人精品无码播放| 日韩精品二区| 91在线高清免费观看| 丁香高清在线观看完整电影视频| 欧美日韩成人高清| 欧美风情第一页| 懂色av噜噜一区二区三区av| 国产亚洲欧美在线视频| 欧美日韩在线观看视频小说| 成人在线免费观看视视频| 18+视频在线观看| 精品对白一区国产伦| 超碰超碰超碰超碰| 欧美极品另类videosde| 杨幂一区二区国产精品| 亚洲国产一区二区三区a毛片| 亚洲一区二区三区乱码aⅴ| 男插女视频久久久| 亚洲系列中文字幕| 成 人片 黄 色 大 片| 日本乱人伦一区| 日韩在线中文字幕视频| 91丨九色丨黑人外教| 午夜剧场在线免费观看| 国产一区二区三区的电影 | 色999久久久精品人人澡69| 久久成人免费视频| 国产视频一区二区三| 天天综合天天综合色| 国产肉体xxxx裸体784大胆| 精品福利av| 午夜一区二区三视频在线观看| 日韩精品一区二区三区av| 久久综合国产精品台湾中文娱乐网| 一级黄色片视频| 午夜免费久久看| 中日韩一级黄色片| www国产精品av| 91人妻一区二区三区| 欧美91大片| 青青草国产精品| 粉嫩av一区二区| 国产日韩欧美夫妻视频在线观看 | 伊人久久大香线蕉av超碰| 欧美精品日韩三级| 国产永久免费高清在线观看视频| 欧美三区免费完整视频在线观看| 国产91丝袜美女在线播放| 成人精品视频一区| 日本午夜激情视频| 外国成人免费视频| 国产精品免费在线播放| 91av一区| 国产成人精品一区二区| 97天天综合网| 欧美精品成人91久久久久久久| 深夜福利在线观看直播| 在线看国产一区二区| 日本三级小视频| 国产日韩精品一区二区三区在线| 亚洲欧美偷拍另类| 热久久国产精品| 可以免费在线看黄的网站| 国产欧美激情| 欧美深夜福利视频| 国产精品多人| 黄色录像特级片| 欧美 日韩 国产精品免费观看| 快播日韩欧美| 麻豆一区二区麻豆免费观看| 国产精品视频在线观看| 国产另类xxxxhd高清| 日本一区二区三区四区视频| 在线观看涩涩| 69久久夜色精品国产69| 国产自产自拍视频在线观看| 97视频在线观看网址| √天堂资源地址在线官网| 亚洲成人网在线观看| 肥臀熟女一区二区三区| 亚洲成人黄色在线| 一级α片免费看刺激高潮视频| 亚洲高清不卡在线观看| 精品少妇theporn| 亚洲一级在线观看| 国产午夜精品一区二区理论影院 | 黄色录像免费观看| 亚洲视频在线一区观看| 97人妻精品一区二区免费| 久久综合久久鬼色中文字| av黄色免费网站| 国产欧美精品一区二区色综合| 国产白袜脚足j棉袜在线观看| 久久精品av麻豆的观看方式| 91在线第一页| 蜜臀久久99精品久久久画质超高清| 日本在线xxx| 久久av一区| 婷婷无套内射影院| 欧美一区综合| 可以在线看的av网站| 合欧美一区二区三区| 青青青青草视频| 日韩国产精品久久久久久亚洲| 欧美精品一区免费| 日韩精品亚洲一区二区三区免费| 男人靠女人免费视频网站| 丝袜a∨在线一区二区三区不卡| 欧美成人三级在线视频| 久久成人免费| www.亚洲高清| 成人激情免费网站| 欧美 日韩 成人| 91麻豆国产香蕉久久精品| 欧美激情久久久久久久| 亚洲精品日韩综合观看成人91| 午夜三级在线观看| 亚欧色一区w666天堂| 国产精品无码粉嫩小泬| 色国产精品一区在线观看| 国产精品久久久午夜夜伦鲁鲁| 欧美日韩视频不卡| 亚洲免费视频网| 国产一区二区三区日韩欧美| 卡通动漫亚洲综合| 一二三四社区欧美黄| 午夜精品久久久久久久久久久久久蜜桃| 一区二区不卡在线播放 | 伊人网在线综合| 成人免费观看男女羞羞视频| 妺妺窝人体色WWW精品| 亚洲在线免费播放| 欧美激情一区二区三区免费观看 | 久久综合久久色| 国产精品一色哟哟哟| 亚洲精品国产一区黑色丝袜| 亚洲午夜羞羞片| 亚洲天堂国产精品| 精品亚洲国产成av人片传媒| 成人黄色网址| 国产精品国内视频| 精品国产导航| 91视频 - 88av| 麻豆专区一区二区三区四区五区| 中文字幕线观看| 久久一日本道色综合| 精品99在线观看| 欧美日韩国产区一| 国产黄色在线| 亚洲91精品在线| av成人男女| 一区二区三区国产福利| 日本中文字幕一区二区有限公司| 一级做a免费视频| 国产无人区一区二区三区| 国产无遮挡aaa片爽爽| 日韩三区在线观看| 日本蜜桃在线观看| 久久久久久久影院| 午夜伦理福利在线| 国产区一区二区| 国产精品www.| 午夜性福利视频| 久久精品人人做人人综合| 日韩乱码人妻无码中文字幕| 欧美系列日韩一区| 番号集在线观看| 国产精品成人一区二区三区吃奶 | 欧美精品久久99久久在免费线| 国产富婆一级全黄大片| 日韩资源在线观看| 欧美男男激情videos| 国产精品一区二区三区在线观| 欧美日韩在线观看视频小说| 成人精品小视频| 久久九九国产精品| 日本中文字幕在线观看视频| 亚洲丝袜在线视频| 日本中文字幕一区二区| 日韩欧美国产二区| 日本不卡在线视频| www.99re6| 日韩亚洲欧美成人一区| 欧美午夜大胆人体| 久久精品一区二区三区不卡免费视频| 欧美岛国激情| 91在线第一页| 国产精品网站在线| 国产裸体永久免费无遮挡| 亚洲欧美日韩第一区| 韩国精品主播一区二区在线观看| 国产精品一区二区三区在线| 日韩视频三区| brazzers精品成人一区| 欧美在线一区二区三区| 青春有你2免费观看完整版在线播放高清| 久久av.com| 久久99国产精品二区高清软件| 久久99精品久久久久久水蜜桃| 欧美不卡高清| 喷水视频在线观看| 一级精品视频在线观看宜春院 | 三级黄色免费观看| 日韩欧美中文字幕一区| heyzo高清中文字幕在线| 欧美精品一区三区在线观看| 欧美aaa在线| 欧美成人综合色| 精品亚洲一区二区三区在线播放| heyzo一区| 天堂精品一区二区三区| 久久国产直播| 国产高潮流白浆| 日韩高清有码在线| av国产精品| 精品中文字幕av| 国产精品久久久久永久免费观看| 精品一区二三区| 欧美日韩成人在线观看| 妖精视频一区二区三区| 一个人看的视频www| 欧美日韩一区二区三区| 欧美少妇另类| 亚洲一区二区自拍| 久久精品日产第一区二区| 艳妇荡乳欲伦69影片| 精品亚洲一区二区三区| 秋霞一区二区| 妺妺窝人体色www在线观看| 一区二区三区久久|