本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9694655
建立时间:2004年12月20日




[数据库]java读取oracle的存储过程
原创空间

邢红瑞 发表于 2005/4/16 19:05:36

java读取oracle的存储过程网上的例子不少,都太简单,没有一个返回参考游标的,返回记录集,自己写一个怕日后忘了。 oracle的PLSQL CREATE OR REPLACE package chapter_13 as TYPE rs IS REF CURSOR ;procedure founder(oFields out rs); end; CREATE OR REPLACE package body chapter_13 as PROCEDURE founder(oFields out rs) ISBEGIN  open oFields for   select * from person;END founder;end;java代码 package jdbc; import java.io.*;import java.sql.*;import java.text.*;import oracle.jdbc.OracleTypes; public class TestStoredProcedures {    Connection conn;     public TestStoredProcedures() {        try {            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());            conn = DriverManager.getConnection(                    "jdbc:oracle:thin:@localhost:1521:orcl", "jola", "jola");        } catch (SQLException e) {            System.err.println(e.getMessage());            e.printStackTrace();        }    }     public static void main(String[] args) throws Exception {        new TestStoredProcedures().process();    }     public void process() throws SQLException {                long start = 0;        long end = 0;        CallableStatement cstmt = null;         try {            start = System.currentTimeMillis();             // *** SQL92 escape syntax ***                         cstmt = conn.prepareCall(                    "{call  chapter_13.founder(?)}");            cstmt.registerOutParameter(1, OracleTypes.CURSOR);            ResultSet rs = null;             cstmt.execute();             rs = (ResultSet)cstmt.getObject(1);            while (rs.next()) {                System.out.println(rs.getString("NAME"));            }            rs.close();             end = System.currentTimeMillis();            System.out.println("Average elapsed time = " +                               (end - start) / 8 + " milliseconds");        } catch (SQLException e) {            System.err.println("SQL Error: " + e.getMessage());        } finally {            if (cstmt != null) {                try {                    cstmt.close();                } catch (SQLException ignore) {}            }        }    }     protected void finalize() throws Throwable {        if (conn != null) {            try {                conn.close();            } catch (SQLException ignore) {}        }        super.finalize();    }}  


阅读全文(7899) | 回复(3) | 编辑 | 精华
 


回复:java读取oracle的存储过程
原创空间

s(游客)发表评论于2008/9/10 14:21:27

关键是用java程序调用确实是没问题,但是我在pl/sql中想去直接访问这个过程,却不知道如何下手 以下为blog主人的回复:  没有任何参数


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:java读取oracle的存储过程
原创空间

green.yang(游客)发表评论于2008/9/10 14:19:48

不行呀大师,搞了好长时间,关键是这个过程的参数是个游标确实不好访问,我用call chapter_13.founder(),这里面的参数确实不知道填什么,一填就错

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:java读取oracle的存储过程
原创空间

s(游客)发表评论于2008/9/10 13:06:31

写的很好,我想问一下你这个如果在控制台用pl/sql语句怎样去访问包(chapter_13)下的存储过程(founder)。通过exec chapter_13.founder,这样好像不行 以下为blog主人的回复:  应该是可以的啊

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.041 second(s), page refreshed 144766642 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号