﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-梦在飞-文章分类-Java</title><link>http://www.blogjava.net/vso/category/16160.html</link><description>JAVA EE</description><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 15:09:28 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 15:09:28 GMT</pubDate><ttl>60</ttl><item><title>在Java中调用Oracle包中的过程 </title><link>http://www.blogjava.net/vso/articles/77582.html</link><dc:creator>vso</dc:creator><author>vso</author><pubDate>Fri, 27 Oct 2006 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/vso/articles/77582.html</guid><wfw:comment>http://www.blogjava.net/vso/comments/77582.html</wfw:comment><comments>http://www.blogjava.net/vso/articles/77582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vso/comments/commentRss/77582.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vso/services/trackbacks/77582.html</trackback:ping><description><![CDATA[
		<p>
				<strong>一、先在oracle中编写测试过程</strong>
		</p>
		<p>1、首选建一个测试表</p>
		<p>-- Create table<br />create table BOOK<br />(<br />  BOOKID    VARCHAR2(50) not null,<br />  BOOKNAME  VARCHAR2(50) not null,<br />  PUBLISHER VARCHAR2(50) not null,<br />  PRICE     VARCHAR2(50) null<br />)</p>
		<p>2、编写ORACLE测试过程</p>
		<p>CREATE OR REPLACE PACKAGE pkg_test<br />AS<br />   TYPE myrctype IS REF CURSOR;</p>
		<p>   PROCEDURE get (p_id VARCHAR2, p_str OUT VARCHAR2, p_rc OUT myrctype);<br />END pkg_test;</p>
		<p>/</p>
		<p>CREATE OR REPLACE PACKAGE BODY pkg_test<br />AS<br />   PROCEDURE get (p_id VARCHAR2, p_str OUT VARCHAR2,p_rc OUT myrctype)<br />   IS<br />      sqlstr   VARCHAR2 (500);<br />   BEGIN<br />      p_str := ''''Hello,may~'''';<br />      IF p_id = ''''all'''' THEN<br />         OPEN p_rc FOR<br />            SELECT *<br />              FROM BOOK;<br />      ELSE<br />         sqlstr :=<br />            ''''select *<br />           from BOOK where BOOKID=:w_id'''';<br />         OPEN p_rc FOR sqlstr USING p_id;<br />      END IF;<br />   END get;<br />END pkg_test;</p>
		<p>/</p>
		<p>在这里我们建立了一个输入参数，为普通类型，两个输出参数，其中一个为普通VARCHAR2型，另一个为特殊的记录集类型。</p>
		<p>（注：在数据库端测试一下这个过程，以确保没有问题，开始下面的操作~：）</p>
		<p>
				<strong> 二、编写JAVA代码测试过程</strong>
		</p>
		<p>/*<br /> * 创建日期: 2003-8-8 <br /> */<br />package JDBC;</p>
		<p>/**<br /> * 作者:may<br /> * 时间:15:09:23<br /> */<br />import java.sql.*;<br />import oracle.jdbc.driver.*;</p>
		<p> </p>
		<p>     public class proctest {<br />  <br />  public static void main(String[] args) {<br />   proctest pc = new proctest();<br />   pc.ShowContent();<br />   }<br /> <br />  <br />  String sDBDriver="oracle.jdbc.driver.OracleDriver";<br />  String sConnStr="jdbc:oracle:thin:@10.3.8.48:1521:ORADB";<br />  <br />  <br />  Connection  connect=null;<br />  ResultSet rs = null;<br />  <br />  public proctest(){<br />   try{<br />    Class.forName(sDBDriver);<br />   }<br />   catch(ClassNotFoundException e){<br />    System.err.println(e.getMessage());<br />   }<br />  }<br />  public ResultSet ShowContent() <br />   <br />  {<br />   <br />   try{<br />    <br />    connect = DriverManager.getConnection(sConnStr,"SHUIBJ","SHUIBJ");<br />    CallableStatement  stmt = connect.prepareCall("{call PKG_TEST.GET(?,?,?)}");<br />    <br />    stmt.setString(1,"all");  //输入参数<br />    <br />    stmt.registerOutParameter(2,Types.CHAR); //输出参数为普通参数<br />    stmt.registerOutParameter(3,OracleTypes.CURSOR); //输出参数为结果集参数<br />      <br />    stmt.executeQuery();<br />    <br />    rs = ((OracleCallableStatement) stmt).getCursor(3); //得到输出结果集参数<br />    <br />    ResultSetMetaData rsmd = rs.getMetaData(); <br />    int numberOfColumns = rsmd.getColumnCount();</p>
		<p>    String str = stmt.getString(2);<br />     <br />  <br />    System.out.println("第二个参数为:"+str);<br />    System.out.println("结果集列数"+numberOfColumns);<br />    <br />    //列出结果集中的记录<br />    ResultSetMetaData md = rs.getMetaData();<br />    int nColumns = md.getColumnCount();<br />    for (int i=1;i&lt;=nColumns;i++){<br />     System.out.print(md.getColumnName(i)+((i==nColumns)?"\n":"\t"));<br />     if(i==2) System.out.print("\t");<br />    }<br />    <br />    while (rs.next()){<br />     for(int i=1;i&lt;=nColumns;i++){<br />     System.out.print(rs.getString(i)+((i==nColumns)?"\n":"\t"));<br />    }<br />     <br />    }<br />   }<br />   catch(SQLException ex){<br />    System.err.println(ex.getMessage()+"连数据库有问题!");<br />   }<br />   <br />   return rs;<br />   <br />  }<br />  <br />}<br /> <br /> 输出结果为：</p>
		<p>第二个参数为:Hello,may~<br />结果集列数4<br />BOOKID BOOKNAME  PUBLISHER PRICE<br />001-22-23-1 jsp 应用开发详解 电子工业出版社 123<br />123  uml参考手册 机械工业出版社 34</p>
<img src ="http://www.blogjava.net/vso/aggbug/77582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vso/" target="_blank">vso</a> 2006-10-27 11:43 <a href="http://www.blogjava.net/vso/articles/77582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>