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

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

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

          ? --sunfruit

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

          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ù)來(lái)返回值的。

          在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ù)庫(kù)

          主站蜘蛛池模板: 射阳县| 天镇县| 石林| 漳浦县| 临清市| 抚远县| 六枝特区| 木兰县| 秭归县| 东方市| 米脂县| 邳州市| 诸城市| 胶南市| 大足县| 屏山县| 瓮安县| 隆昌县| 蓝山县| 卫辉市| 宣化县| 井研县| 桓台县| 延川县| 平武县| 张家口市| 鹿泉市| 苍溪县| 镇宁| 济南市| 高台县| 襄樊市| 泸州市| 都兰县| 洪泽县| 樟树市| 大洼县| 西平县| 邹平县| 政和县| 浦城县|