码迷,mamicode.com
首页 > 数据库 > 详细

java实现调用ORACLE中的游标和包

时间:2016-12-02 22:21:20      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:lock   ora   next   建立   auto   cat   material   import   prepare   

今天把oracle中的包和游标学习了下,不废话,网上的的有些代码是错误的,抄来抄去,就自己实践了下,做个记录。直接上图,上代码

通过plsql创建自己的的包,包分为包头和包体。

1.包头如下:

技术分享

1 CREATE OR REPLACE PACKAGE JAVALINKTEST
2 IS
3   TYPE CURSOR_TYPE IS REF CURSOR;      --定义游标
4   PROCEDURE TEST_CURSOR(INPUT STRING, CURSOR_BACK OUT CURSOR_TYPE);
5 
6 END JAVALINKTEST;

 

2.包体如下:

技术分享

 1 CREATE OR REPLACE PACKAGE BODY JAVALINKTEST IS
 2 
 3 PROCEDURE TEST_CURSOR(INPUT STRING, CURSOR_BACK OUT CURSOR_TYPE)
 4 IS
 5 BEGIN
 6 IF INPUT = 物料 THEN
 7 OPEN CURSOR_BACK FOR SELECT *  FROM T_BD_MATERIAL WHERE CFISSYNC = 1;
 8 ELSE
 9 OPEN CURSOR_BACK FOR SELECT *  FROM T_BD_CUSTOMER WHERE CFISSYNC = 1;
10 
11 END IF;
12 
13 END TEST_CURSOR;
14 END JAVALINKTEST;

 

3.java环境,用的时eclispe,oracle 11g,java代码如下,需要的小伙伴自己引一下jdbc包吧

技术分享

 1 package cursorTest;
 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.Statement;
 9 import oracle.jdbc.OracleTypes;
10 import oracle.jdbc.oracore.OracleType;
11 
12 public class cursorUse {
13     static ResultSet rs = null;
14     static Statement stmt = null;
15     static Connection conn = null;
16     static CallableStatement proc = null;
17     static int i;  
18 
19     public static void main(String[] args) {
20 
21         try {
22             // 加载驱动
23             Class.forName("oracle.jdbc.driver.OracleDriver");
24             // 与数据库建立物理连接
25             conn = DriverManager.getConnection(
26                     "jdbc:oracle:thin:@127.0.0.1:1521:orcl", "easdb", "easdb");
27             // 调用 游标
28             proc = conn.prepareCall("call JAVALINKTEST.TEST_CURSOR(?,?)");
29             proc.setString(1, "hhe");
30             proc.registerOutParameter(2, OracleTypes.CURSOR);
31             proc.execute();
32             rs = (ResultSet) proc.getObject(2);
33             
34             while (rs.next()) {
35                 i+=1;
36                 System.out.println("fid:" + rs.getString(1)+
37                         "   编码:"+rs.getString("fnumber")+"  名称:"+rs.getString("fname_l2"));
38                 
39             }
40             System.out.println("返回结果集:共"+i+"行");
41         } catch (ClassNotFoundException e) {
42             // TODO Auto-generated catch block
43             e.printStackTrace();
44         } catch (SQLException e) {
45             // TODO Auto-generated catch block
46             e.printStackTrace();
47         } finally {
48             if (rs != null) {
49                 try {
50                     rs.close();
51                 } catch (SQLException e) {
52                     // TODO Auto-generated catch block
53                     e.printStackTrace();
54                 }
55             }
56             if (stmt != null) {
57                 try {
58                     stmt.close();
59                 } catch (SQLException e) {
60                     // TODO Auto-generated catch block
61                     e.printStackTrace();
62                 }
63             }
64             if (conn != null) {
65                 try {
66                     conn.close();
67                 } catch (SQLException e) {
68                     // TODO Auto-generated catch block
69                     e.printStackTrace();
70                 }
71             }
72         }
73 
74     }
75 
76 }

运行结果如下:

技术分享

 

java实现调用ORACLE中的游标和包

标签:lock   ora   next   建立   auto   cat   material   import   prepare   

原文地址:http://www.cnblogs.com/zhwl0520/p/6127330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!