Welcome 微信登录

首页 / 数据库 / MySQL / 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=王八Oracle EBS 如何定义请求PowerDesigner生成Oracle表名带有引号的解决方法相关资讯      Oracle基础教程 
  • Oracle块编程返回结果集详解  (11/10/2013 10:45:58)
  • Oracle基础教程之设置系统全局区  (08/22/2013 14:24:00)
  • Oracle基础教程知识点总结  (06/18/2013 07:43:32)
  • Oracle基础教程之tkprof程序详解  (10/22/2013 11:49:50)
  • Oracle基础教程之sqlplus汉字乱码  (07/18/2013 16:30:00)
  • Oracle 管理之 Linux 网络基础  (02/16/2013 18:37:35)
本文评论 查看全部评论 (0)
表情: 姓名: 字数