如何從 PL/SQL 存儲函數返回數組

簡介 

本文檔演示如何從 PL/SQL 函數返回數組並從 java 應用程序訪問它。數組是一組有序的數據元素。 VARRAY 是大小可變的數組。它具有數據元素的排列集,並且所有元素屬於同一數據類型。每個元素都具有索引,它是與元素在 VARRAY 中的位置相對應的一個數字。 VARRAY 中元素的數量是 VARRAY 的“大小”。在聲明 VARRAY 類型時,必須指定其最大值。 

在此方法指南中,PL/SQL 存儲函數從 SCOTT 模式的 EMP 表中取出所有僱員的姓名,以這些姓名創建一個數組並將其返回。從 Java 應用程序調用此 PL/SQL 存儲函數,向用戶顯示僱員的姓名。
軟件需求 

Oracle9i Database version 9.0.1 或更新版本。您可從 Oracle 技術網下載 Oracle9i 數據庫。 

JDK1.2.x 或更高版本。可從此處下載。

Oracle9i JDBC 驅動程序。JDBC 驅動程序可從 ORACLE_HOME/jdbc/lib 處獲得。也可從此處下載。 

在數據庫中創建一個 SQLVARRAY 類型,在本例中,它是 VARCHAR2 類型。 作爲 scott/tiger 用戶連接到數據庫,並在 SQL 提示符處執行以下命令。 

Java代碼  收藏代碼
  1. SQL>CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF VARCHAR2(30)  
  2. SQL>/  
 然後創建下面的函數,它返回一個 VARRAY。

Java代碼  收藏代碼
  1. CREATE OR REPLACE FUNCTION getEmpArray RETURN EMPARRAY AS   l_data EmpArray := EmpArray();   CURSOR c_emp IS SELECT ename FROM EMP;   BEGIN     FOR emp_rec IN c_emp LOOP       l_data.extend;       l_data(l_data.count) := emp_rec.ename;     END LOOP;     RETURN l_data;   END;  

 在數據庫中創建函數後,可以從 java 應用程序調用它並在應用程序中獲得數組數據。下面給出代碼段,從 Java 應用程序執行 PL/SQL 存儲函數。單擊此處查看完整的應用程序源代碼。

 

Java代碼  收藏代碼
  1. public static void main( ) { ......... .........    OracleCallableStatement stmt =(OracleCallableStatement)conn.prepareCall                 ( "begin ?:= getEMpArray; end;" );      // The name we use below, EMPARRAY, has to match the name of the      // type defined in the PL/SQL Stored Function     stmt.registerOutParameter( 1, OracleTypes.ARRAY,"EMPARRAY" );     stmt.executeUpdate();      // Get the ARRAY object and print the meta data assosiated with it     ARRAY simpleArray = stmt.getARRAY(1);      System.out.println("Array is of type " +  simpleArray.getSQLTypeName());      System.out.println("Array element is of type code "+simpleArray.getBaseType());      System.out.println("Array is of length " + simpleArray.length());      // Print the contents of the array     String[] values = (String[])simpleArray.getArray();      for( int i = 0; i < values.length; i++ )       System.out.println( "row " + i + " = '" + values[i] +"'" );  ........... ...........  

 在上面的代碼段中,可以看到 OracleCallableSatatement 用於調用 PL/SQL 存儲函數。在執行 PL/SQL 存儲函數前,將返回的數據類型註冊爲 OracleTypes.ARRAY,並且指定在數據庫中定義的類型名稱 (EMPARRAY)。然後執行 PL/SQL 存儲函數並獲得 oracle.sql.ARRAY 形式的返回值。 oracle.sql.ARRAY 類擁有的方法可以獲得關於數組的詳細信息,如數組類型、數組長度等。使用 oracle.sql.ARRAY 的 getArray() 方法獲得數組的內容並將內容打印出來。 
總結 

本文檔說明了如何創建 VARRAY 並從 PL/SQL 存儲函數返回數組,以及如何從 java 應用程序訪問它。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章