« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 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(); }}
|
|
回复: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 »
|