sunfruit[請(qǐng)?jiān)L問http://www.fruitres.cn]

          --我相信JAVA能走得更遠(yuǎn) QQ:316228067

          JAVA調(diào)用返回結(jié)果集的存儲(chǔ)過程--Oracle

          ? --sunfruit

          建立存儲(chǔ)過程,存儲(chǔ)過程為:

          CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS

          BEGIN

          ??? OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;

          END TESTC;

          可以看到,它是把游標(biāo)(可以理解為一個(gè)指針),作為一個(gè)out 參數(shù)來返回值的。

          在java里調(diào)用時(shí)就用下面的代碼:

          package com.hyq.src;

          import java.sql.*;

          import java.io.OutputStream;

          import java.io.Writer;

          import java.sql.PreparedStatement;

          import java.sql.ResultSet;

          import oracle.jdbc.driver.*;

          public class TestProcedureTHREE {

          ? public TestProcedureTHREE() {

          ? }

          ? public static void main(String[] args ){

          ??? String driver = "oracle.jdbc.driver.OracleDriver";

          ??? String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";

          ??? Statement stmt = null;

          ??? ResultSet rs = null;

          ??? Connection conn = null;

          ??? try {

          ????? Class.forName(driver);

          ????? conn =? DriverManager.getConnection(strUrl, "hyq", "hyq");

          ????? CallableStatement proc = null;

          ????? proc = conn.prepareCall("{ call hyq.testc(?) }");

          ????? proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);

          ????? proc.execute();

          ????? rs = (ResultSet)proc.getObject(1);

          ????? while(rs.next())

          ????? {

          ????????? System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");

          ????? }

          ??? }

          ??? catch (SQLException ex2) {

          ????? ex2.printStackTrace();

          ??? }

          ??? catch (Exception ex2) {

          ????? ex2.printStackTrace();

          ??? }

          ??? finally{

          ????? try {

          ??????? if(rs != null){

          ????????? rs.close();

          ????????? if(stmt!=null){

          ??????????? stmt.close();

          ????????? }

          ????????? if(conn!=null){

          ??????????? conn.close();

          ????????? }

          ??????? }

          ????? }

          ????? catch (SQLException ex1) {

          ????? }

          ??? }

          ? }

          }

          在這里要注意,在執(zhí)行前一定要先把oracle的驅(qū)動(dòng)包放到class路徑里,否則會(huì)報(bào)錯(cuò)的。

          posted on 2006-06-15 09:36 sunfruit 閱讀(738) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          主站蜘蛛池模板: 江油市| 湖南省| 景德镇市| 武鸣县| 中超| 云安县| 宁安市| 怀安县| 凌海市| 同江市| 确山县| 庆安县| 瓦房店市| 唐海县| 福贡县| 博爱县| 阳西县| 商河县| 介休市| 高尔夫| 牟定县| 海丰县| 克什克腾旗| 东光县| 长寿区| 延庆县| 广汉市| 兴和县| 云霄县| 康乐县| 山东| 绥芬河市| 云梦县| 德阳市| 加查县| 葫芦岛市| 彰武县| 通化市| 高邑县| 大化| 锡林郭勒盟|