程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 如何使用Oracle存儲過程的一個簡單例子

如何使用Oracle存儲過程的一個簡單例子

編輯:Oracle數據庫基礎
 

建立存儲過程

  1. CREATE OR REPLACE PROCEDURE test_pro3(x OUT INT,y OUT int) 
  2. IS 
  3.   BEGIN 
  4.     x := 20; 
  5.     y := 30; 
  6.   END;

查詢存儲過程:

  1. SQL> SELECT text FROM all_source WHERE TYPE = 'PROCEDURE' AND name = 'TEST_PRO3'; 
  2.  
  3. TEXT 
  4. -------------------------------------------------------------------------------- 
  5. PROCEDURE test_pro3(x OUT INT,y OUT int) 
  6. IS 
  7.   BEGIN 
  8.     x := 20; 
  9.     y := 30; 
  10.   END; 
  11.  
  12. 已選擇6行。 

JAVA調用存儲過程的code:

  1. package votory; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5.  
  6. import java.sql.*; 
  7. import java.sql.ResultSet; 
  8.  
  9. public class ConneDB { 
  10.     public ConneDB() { 
  11.     } 
  12.  
  13.     public static void main(String[] args) { 
  14.         String driver = "oracle.jdbc.driver.OracleDriver"; 
  15.         String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:SID"; 
  16.         Statement stmt = null; 
  17.         ResultSet rs = null; 
  18.         Connection conn = null; 
  19.         CallableStatement cstmt = null; 
  20.  
  21.         try { 
  22.             Class.forName(driver); 
  23.             conn = DriverManager.getConnection(strUrl, "scott", "tiger"); 
  24.             CallableStatement proc = null; 
  25.              
  26.             proc = conn.prepareCall("{ call test_pro3(?,?)}"); 
  27.             proc.registerOutParameter(1, Types.INTEGER); 
  28.             proc.registerOutParameter(2, Types.INTEGER); 
  29.             proc.execute(); 
  30.              
  31.             String test = proc.getString(1); 
  32.             String test2 = proc.getString(2); 
  33.              
  34.             System.out.println(test + " " + test2); 
  35.             System.out.println("DONE.............."); 
  36.         } catch (SQLException ex2) { 
  37.             ex2.printStackTrace(); 
  38.         } catch (Exception ex2) { 
  39.             ex2.printStackTrace(); 
  40.         } finally { 
  41.             try { 
  42.                 if (rs != null) { 
  43.                     rs.close(); 
  44.                     if (stmt != null) { 
  45.                         stmt.close(); 
  46.                     } 
  47.                     if (conn != null) { 
  48.                         conn.close(); 
  49.                     } 
  50.                 } 
  51.             } catch (SQLException ex1) { 
  52.             } 
  53.         } 
  54.     } 

結果如下:

  1. 20 30 
  2. DONE.............. 

總算是搞明白一個簡單例子。。。。。呵呵

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