知识大全 在Java中调用Oracle包中的过程
Posted 过程
篇首语:厌伴老儒烹瓠叶,强随举子踏槐花。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在Java中调用Oracle包中的过程相关的知识,希望对你有一定的参考价值。
在Java中调用Oracle包中的过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 先在oracle中编写测试过程
首选建一个测试表
Create tablecreate table BOOK( BOOKID VARCHAR ( ) not null BOOKNAME VARCHAR ( ) not null PUBLISHER VARCHAR ( ) not null PRICE VARCHAR ( ) null)
编写ORACLE测试过程
CREATE OR REPLACE PACKAGE pkg_testAS TYPE myrctype IS REF CURSOR;
PROCEDURE get (p_id VARCHAR p_str OUT VARCHAR p_rc OUT myrctype);END pkg_test;
/
CREATE OR REPLACE PACKAGE BODY pkg_testAS PROCEDURE get (p_id VARCHAR p_str OUT VARCHAR p_rc OUT myrctype) IS sqlstr VARCHAR ( ); BEGIN p_str := Hello may~ ; IF p_id = all THEN OPEN p_rc FOR SELECT * FROM BOOK; ELSE sqlstr := select * from BOOK where BOOKID=:w_id ; OPEN p_rc FOR sqlstr USING p_id; END IF; END get;END pkg_test;
/
在这里我们建立了一个输入参数 为普通类型 两个输出参数 其中一个为普通VARCHAR 型 另一个为特殊的记录集类型
(注 在数据库端测试一下这个过程 以确保没有问题 开始下面的操作~ )
二 编写JAVA代码测试过程
/* * 创建日期: */package JDBC;
/** * 作者:may * 时间: : : */import java sql *;import oracle jdbc driver *;
public class proctest public static void main(String[] args) proctest pc = new proctest(); pc ShowContent(); String sDBDriver= oracle jdbc driver OracleDriver ; String sConnStr= jdbc:oracle:thin:@ : :ORADB ; Connection connect=null; ResultSet rs = null; public proctest() try Class forName(sDBDriver); catch(ClassNotFoundException e) System err println(e getMessage()); public ResultSet ShowContent() try connect = DriverManager getConnection(sConnStr SHUIBJ SHUIBJ ); CallableStatement stmt = connect prepareCall( call PKG_TEST GET(? ? ?) ); stmt setString( all ); //输入参数 stmt registerOutParameter( Types CHAR); //输出参数为普通参数 stmt registerOutParameter( OracleTypes CURSOR); //输出参数为结果集参数 stmt executeQuery(); rs = ((OracleCallableStatement) stmt) getCursor( ); //得到输出结果集参数 ResultSetMetaData rsmd = rs getMetaData(); int numberOfColumns = rsmd getColumnCount();
String str = stmt getString( ); System out println( 第二个参数为: +str); System out println( 结果集列数 +numberOfColumns); //列出结果集中的记录 ResultSetMetaData md = rs getMetaData(); int nColumns = md getColumnCount(); for (int i= ;i<=nColumns;i++) System out print(md getColumnName(i)+((i==nColumns)? \\n : \\t )); if(i== ) System out print( \\t ); while (rs next()) for(int i= ;i<=nColumns;i++) System out print(rs getString(i)+((i==nColumns)? \\n : \\t )); catch(SQLException ex) System err println(ex getMessage()+ 连数据库有问题! ); return rs; 输出结果为
cha138/Article/program/Oracle/201311/18612相关参考