程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle中把Array類型作為參數傳入存儲過程的示例

Oracle中把Array類型作為參數傳入存儲過程的示例

編輯:Oracle數據庫基礎

Oracle中把Array類型作為參數傳入存儲過程並用Java對其進行調用的示例是本文我們主要要介紹的內容,接下來我們就開始介紹這一過程。

使用Oracle Database 11g Enterprise Edition Release 11.2.0.1.0. 步驟:

1. 創建自定義的類型。由於Oracle沒有提供現成的array類型,這裡用table類型來模擬。

CREATE OR REPLACE TYPE varchar_array is Table OF varchar2(128) 創建後,varchar_array是一個table,裡面元素的類型為varchar2(128).

2. 創建一個存儲過程test1. 這個過程接受一個上面創建的varchar_array類型作為輸入參數. 在過程體中,通過一個循環遍歷傳入的array中的每一個元素, 插入到一個表tb中:

  1. create or replace procedure test1(arr in varchar_array) is  
  2. begin  
  3. FOR i IN arr.first .. arr.last LOOP  
  4. insert into tb values(arr(i));  
  5. END LOOP;  
  6. end test1; 

3. 數據庫這邊的基本上完事了。 Java程序如下, 基本上和普通程序差不多:

  1. String driver = "oracle.jdbc.driver.OracleDriver";  
  2.  
  3. String strUrl = "jdbc:Oracle:thin:@192.168.1.199:1521:orcl";  
  4. Statement stmt = null;  
  5. ResultSet rs = null;  
  6. Connection conn = null; try {  
  7. Class.forName(driver);  
  8. conn = DriverManager.getConnection(strUrl, "user", "pass");  
  9. CallableStatement proc = null;  
  10. proc = conn.prepareCall("{ call test1(?) }"); //調用存儲過程test1  
  11. //不一樣的地方,獲得上面創建的自定義的類型,注意大小寫  
  12. ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("VARCHAR_ARRAY",   
  13. conn);  
  14. List list = new ArrayList();  
  15. list.add("a");  
  16. list.add("b");   
  17. //把list中的元素轉換成自定義的類型  
  18. ARRAY array = new ARRAY(descriptor, conn, list.toArray()); proc.setArray(1, array); proc.execute(); catch (Exception ex) {  
  19. ex.printStackTrace();  
  20. } finally {  
  21. ..... 各種 close ......  

執行該Java程序,查詢表tb,程序中的元素正常插入。

以上就是Oracle中把Array類型作為參數傳入存儲過程,並用Java對其進行調用的示例的全部,本文我們就介紹到這裡了,希望本次的介紹能夠對您有所收獲!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved