Oracle学习笔记之有返回列表的存储过程


建表sql 

  1. CREATE TABLE student(   
  2. student_id NUMBER PRIMARY KEY,   
  3. student_name vARCHAR2(30) NOT NULL)   
  4.   
  5. insert into STUDENT (STUDENT_ID, STUDENT_NAME)    
  6. values (1, '张三');    
  7. insert into STUDENT (STUDENT_ID, STUDENT_NAME)    
  8. values (2, '李四');    
  9. insert into STUDENT (STUDENT_ID, STUDENT_NAME)    
  10. values (3, '王五');    
  11. insert into STUDENT (STUDENT_ID, STUDENT_NAME)    
  12. values (4, '马六');    
  13. insert into STUDENT (STUDENT_ID, STUDENT_NAME)    
  14. values (5, '孙七');    
  15. insert into STUDENT (STUDENT_ID, STUDENT_NAME)    
  16. values (6, '王八');  

创建包

  1. create or replace package testpackage as   
  2. type Test_CURSOR is ref cursor;  
  3. end testpackage; 
 
  1. 创建存储过程  
  2. create or replace procedure testc(p_cursor out testpackage.Test_CURSOR)  
  3. is  
  4. begin   
  5. open p_cursor for select * from student;  
  6. end  testc;  

java调用

  1. package com.anxin.util;  
  2.   
  3. import java.sql.CallableStatement;  
  4. import java.sql.Connection;  
  5. import java.sql.DriverManager;  
  6. import java.sql.ResultSet;  
  7. import java.sql.SQLException;  
  8. import java.sql.Types;  
  9.   
  10. public class DBAccess {  
  11.     public DBAccess() {  
  12.     }  
  13.   
  14.     public static Connection getConnection(String type) {  
  15.         Connection conn = null;  
  16.         String url = "";  
  17.         String user = "";  
  18.         String password = "";  
  19.         String driverName = "";  
  20.         if (type.equals("mysql")) {  
  21.             url = "jdbc:mysql://localhost:3306/file?characterEncoding=utf8";  
  22.             user = "root";  
  23.             password = "123";  
  24.             driverName = "com.mysql.jdbc.Driver";  
  25.         } else if (type.equals("Oracle")) {  
  26.             url = "jdbc:oracle:thin:@localhost:1521:anxin";  
  27.             user = "system";  
  28.             password = "123456";  
  29.             driverName = "oracle.jdbc.driver.OracleDriver";  
  30.         }  
  31.         try {  
  32.             Class.forName(driverName);  
  33.         } catch (ClassNotFoundException e) {  
  34.             // TODO Auto-generated catch block   
  35.             System.out.println("驱动程序未找!");  
  36.             e.printStackTrace();  
  37.         }  
  38.         try {  
  39.             conn = DriverManager.getConnection(url, user, password);  
  40.         } catch (SQLException e) {  
  41.             // TODO Auto-generated catch block   
  42.             System.out.println("数据库连接出错啦!");  
  43.             e.printStackTrace();  
  44.         }  
  45.         System.out.println("Connection连接成功!");  
  46.         return conn;  
  47.   
  48.     }  
  49.   
  50.     public static void main(String[] args) throws Exception {  
  51.         // TODO Auto-generated method stub   
  52.         Connection connection = getConnection("oracle");  
  53.         connection.setAutoCommit(false);  
  54.         CallableStatement cal=null;  
  55. //      cal=connection.prepareCall("call insertStu(?,?,?)");   
  56. //      cal.setInt(1, 34);   
  57. //      cal.setString(2, "李蓓");   
  58. //      cal.registerOutParameter(3,Types.INTEGER);   
  59. //      cal.execute();   
  60. //      System.out.println(cal.getInt(3));   
  61.           
  62.         cal=connection.prepareCall("call testc(?)");  
  63.         cal.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);  
  64.         cal.execute();  
  65.         ResultSet rs = (ResultSet)cal.getObject(1);  
  66.         while(rs.next())  
  67.           {  
  68.               System.out.println("<tr><td>" + rs.getInt(1) + "</td><td>"+rs.getString(2)+"</td></tr>");  
  69.           }  
  70.     }  
  71.   
  72. }  
输出结果:

学生ID=1,学生姓名Name=张三
学生ID=2,学生姓名Name=李四
学生ID=3,学生姓名Name=王五
学生ID=4,学生姓名Name=马六
学生ID=5,学生姓名Name=孙七
学生ID=6,学生姓名Name=王八

相关内容