<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學(xué)習(xí)和生活

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

    這段時(shí)間開(kāi)始學(xué)習(xí)寫(xiě)存儲(chǔ)過(guò)程,主要原因還是因?yàn)楣ぷ餍枰桑緛?lái)以為很簡(jiǎn)單的,但幾經(jīng)挫折,豪氣消磨殆盡,但總算搞通了,為了避免后來(lái)者少走彎路,特記述與此,同時(shí)亦對(duì)自己進(jìn)行鼓勵(lì)。

    一:無(wú)返回值的存儲(chǔ)過(guò)程

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

    CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)  AS

    BEGIN

       INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);

    END TESTA;

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

    package com.hyq.src;

     

    import java.sql.*;

    import java.sql.ResultSet;

     

    public class TestProcedureOne {

      public TestProcedureOne() {

      }

      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;

        CallableStatement cstmt = null;

     

        try {

          Class.forName(driver);

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

          CallableStatement proc = null;

          proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");

          proc.setString(1, "100");

          proc.setString(2, "TestOne");

          proc.execute();

        }

        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) {

          }

        }

      }

    }

    當(dāng)然了,這就先要求要建張表TESTTB,里面兩個(gè)字段(I_IDI_NAME)。

    二:有返回值的存儲(chǔ)過(guò)程(非列表)

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

    CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2)  AS

    BEGIN

       SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;

    END TESTB;

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

    package com.hyq.src;

     

    public class TestProcedureTWO {

      public TestProcedureTWO() {

      }

      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.TESTB(?,?) }");

          proc.setString(1, "100");

          proc.registerOutParameter(2, Types.VARCHAR);

          proc.execute();

          String testPrint = proc.getString(2);

          System.out.println("=testPrint=is="+testPrint);

        }

        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) {

          }

        }

      }

    }

     

    }

    注意,這里的proc.getString(2)中的數(shù)值2并非任意的,而是和存儲(chǔ)過(guò)程中的out列對(duì)應(yīng)的,如果out是在第一個(gè)位置,那就是proc.getString(1),如果是第三個(gè)位置,就是proc.getString(3),當(dāng)然也可以同時(shí)有多個(gè)返回值,那就是再多加幾個(gè)out參數(shù)了。

    三:返回列表

    由于oracle存儲(chǔ)過(guò)程沒(méi)有返回值,它的所有返回值都是通過(guò)out參數(shù)來(lái)替代的,列表同樣也不例外,但由于是集合,所以不能用一般的參數(shù),必須要用pagkage.所以要分兩部分,

    1,  建一個(gè)程序包。如下:

    CREATE OR REPLACE PACKAGE TESTPACKAGE  AS

     TYPE Test_CURSOR IS REF CURSOR;

    end TESTPACKAGE;

    2,建立存儲(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ò)的。

    如果有什么問(wèn)題呢,可以和我聯(lián)系hnlyhyq@163.com;qq:77542728.

    我的心愿,愿中國(guó)的程序員早日達(dá)到世界水平,領(lǐng)先世界科技。

    posted on 2005-12-13 11:05 TrampEagle 閱讀(86494) 評(píng)論(100)  編輯  收藏 所屬分類(lèi): 學(xué)習(xí)體會(huì)

    Feedback

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2005-12-26 17:35 江波
    謝謝,,  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2005-12-26 17:36 江波
    你能不能加我,,,我們共同學(xué)習(xí)哈。。
    42401916  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2005-12-28 08:28 TrampEagle
    這本就是個(gè)相互交流學(xué)習(xí)的平臺(tái),所以不用客氣的。你當(dāng)然可以成為我的好友的,共同學(xué)習(xí),共同努力!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-01-09 09:36 張偉
    收益良多,十分感謝;希望能成為好友,共同學(xué)習(xí)進(jìn)步!qq:349477837  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-01-10 14:02 ice
    垃圾代碼
    中國(guó)怎么有這么多的垃圾程序員,去死吧 還希望早日達(dá)到世界水平 笑話(huà)!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-01-10 14:29 TrampEagle
    TO ice:
    首先向你致歉,可能這些代碼沒(méi)有使你能夠如愿正常進(jìn)行你的工作;
    其次,我想聲明一點(diǎn),這里的代碼只是介紹一種方法,提供一種途徑,我的本意是為自己做筆記的,其次才是能不能為他人做點(diǎn)貢獻(xiàn),所以有的地方可能不太完善,為自己的做法致歉。
    但是,通過(guò)謾罵就能解決問(wèn)題嗎?既然這方面,我們存在溝壑,我們就應(yīng)該好好溝通一下,對(duì)你我想也不會(huì)有壞處的。如果你有什么問(wèn)題,可以通過(guò)我的聯(lián)系方式同我聯(lián)系!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-01-12 11:43 ryan
    我也研究Java調(diào)Oracle Store Procedure一段時(shí)間,發(fā)現(xiàn)一些問(wèn)題
    主要是Open 的Cursor不會(huì)釋放,v$open_cursor只增長(zhǎng)不減少,最后服務(wù)器只能重起。
    希望能交流。QQ:22828569  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-03-10 16:41 Janson
    你的文章發(fā)布的真是太好了!我找這方面的例子已經(jīng)一個(gè)星期了,終于在你這能夠執(zhí)行了,呵呵,從此我也可以練習(xí)使用oracle的存儲(chǔ)過(guò)程了。哥們,真的謝了!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-03-10 21:51 TrampEagle
    @Janson
    能幫上你的小忙是我萬(wàn)分的榮幸,呵呵!
    其實(shí),我學(xué)習(xí)存儲(chǔ)過(guò)程時(shí),就是因?yàn)檎也坏竭@方面的完整例子花費(fèi)了不少時(shí)間,所以記于此,一是作筆記,另外給需要這方面知識(shí)的朋友提供一份參考,使他們少走一些彎路。
    希望大家都能把自己的一些心得體會(huì)發(fā)布出來(lái),互相幫助,共同進(jìn)步!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-03-28 14:39 ajian005
    可以少走彎路 , 謝謝 !  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-05-29 18:13 TrampEagle
    補(bǔ)充一個(gè)使用oracle存儲(chǔ)過(guò)程分頁(yè)的小例子:
    1, 建一個(gè)程序包。如下:

    CREATE OR REPLACE PACKAGE TESTPACKAGE AS

    TYPE Test_CURSOR IS REF CURSOR;

    end TESTPACKAGE;

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


    create or replace procedure TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR,lowerNum in numeric,higherNum in numeric) is
    begin
    OPEN p_CURSOR FOR select * from ( select row_.*, rownum rownum_ from (select id,title,status from HYQTEST) row_ where rownum <= higherNum) where rownum_ >lowerNum;
    end TESTC;

    使用plsql測(cè)試:
    declare
    lowerNum integer;
    higherNum integer;
    id varchar2(10);
    title varchar2(500);
    status numeric;
    c testpackage.Test_CURSOR;
    rownum_ integer;
    begin
    lowerNum:=1;
    higherNum:=10;
    TESTC(c,lowerNum,higherNum);
    LOOP
    FETCH c INTO id,title,status,rownum_;
    EXIT WHEN c%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('=行號(hào)='||rownum_||'=='||id||'==='||title||'===='||status||'==');
    END LOOP;
    CLOSE c;

    end;

      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-07-12 13:18 yclc
    似乎使用cStmt.getResultSet() 可以直接獲取procedure中執(zhí)行過(guò)的select  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-08-09 09:43 wu
    呵呵~我也找了挺長(zhǎng)時(shí)間了,正好用上,謝謝 a lot 了哈哈。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-08-14 10:43 才子
    謝謝你了,大哥  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-08-23 17:25 不斷學(xué)習(xí)是責(zé)任
    謝謝了,受益不少.  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-09-29 17:13 coldiced
    謝謝幫助,支持樓主!鄙視牛人!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-10-31 19:46 zdl
    應(yīng)該好好學(xué)習(xí),支持下樓主  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-11-25 11:02
    頂一下  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-12-14 11:44 ipxzerg
    樣例的技術(shù)含量和代碼的水平有待提高,不過(guò)還是支持一下,希望樓主加強(qiáng)學(xué)習(xí)。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2006-12-23 23:37 vally
    太感謝了,正急需這倆方面的信息,今天一找就給全部找到了!希望樓主能多發(fā)布些好資料呀!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-02-14 14:07 在線視頻
    不錯(cuò),3種情況都介紹了  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-03-30 13:34 fdfd
    dffdfddff  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-03-30 14:11 aa
    中國(guó)程序員什么 時(shí)候才到世界水平呢?難,少  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-04-27 14:16 sd
    加油  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-05-10 15:28 Laurence.Lee
    up!
    up!
    Thanks a lot!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-05-22 11:54 ade
    謝謝分享!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-06-04 11:28 學(xué)習(xí)ing
    頂以下  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-07-13 11:24 huraky
    謝謝樓主,收益不少!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-07-17 17:24 zbc
    真的寫(xiě)得很好..
    是個(gè)學(xué)習(xí)的好例子.  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2007-07-22 00:43
    非常感謝樓主,我找這樣的例子找了好久,我原來(lái)用sqlserver,現(xiàn)轉(zhuǎn)oracle,兩者差別太大,在sqlserver中輕松能搞定的存儲(chǔ)過(guò)程在oracle中有點(diǎn)束手無(wú)冊(cè)了,查了很多資料,也沒(méi)搞明白,看了你的例子,受益非淺,可以加你的QQ不,我的QQ:663535631

      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-08-14 16:35 bai
    總結(jié)得很好
    頂?。?!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-08-26 18:16 可可
    不錯(cuò)啊  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-09-07 14:33 little star
    特別鄙視哪個(gè)說(shuō)話(huà)垃圾的.
    我覺(jué)得樓主很不錯(cuò)的,把自己做出來(lái)的東西跟大家一起分享,雖然這個(gè)代碼簡(jiǎn)單了點(diǎn),但也有很多人看到后受到啟發(fā).在國(guó)內(nèi)做東西,每個(gè)人的思路都不一樣,實(shí)現(xiàn)的方式也可能不一樣,象你那樣說(shuō)完全沒(méi)有必要,你覺(jué)得不合適你,你可以不看.  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-09-18 13:41 饒志華
    謝謝分享  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-10-10 17:49 Roger Gao
    數(shù)據(jù)類(lèi)型是table,元素類(lèi)型是Record的存儲(chǔ)過(guò)程調(diào)用過(guò)嗎?  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2007-11-10 16:26 123
    能用存儲(chǔ)過(guò)程操作文件嗎 能用oracle調(diào)用java程序刪除文件嗎 有的話(huà) 請(qǐng)說(shuō)出來(lái) 共同研究 你的文章很有用   回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2007-12-28 16:52 jedi
    多謝,轉(zhuǎn)到偶的BLOG上收藏了  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-03-18 19:45 gma
    @ice
    你寫(xiě)一個(gè)不垃圾的給瞧瞧!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-03-24 11:39 Irene
    正好我也要學(xué)習(xí)存儲(chǔ)過(guò)程,感謝lz  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-03-31 11:59 hao
    我剛開(kāi)始學(xué)存儲(chǔ)過(guò)程,多謝啦!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2008-04-01 09:47 aa
    你他媽的狗屎,不要亂說(shuō)別人的代碼不好,有本領(lǐng)把你寫(xiě)的share出來(lái),自己寫(xiě)不出嗎還說(shuō)別人是垃圾,我看你才是垃圾中的極品  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-04-16 21:28 yangyi
    你寫(xiě)的太好了
    能否加我啊
    QQ 465937187  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-04-25 00:00 man
    說(shuō)點(diǎn)題外話(huà),你的文章咬文嚼字的,閑詞廢話(huà)和語(yǔ)病很多,希望你盡量用平實(shí)直接的表達(dá)方式。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-05-13 23:05 xlx
    謝謝  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-05-21 14:39 hello
    為什么我按上面做的,數(shù)據(jù)庫(kù)表里面沒(méi)有數(shù)據(jù)啊  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2008-05-28 15:26 Jerry
    感謝樓主  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-06-26 20:27 杰杰
    非常感謝  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-07-26 12:29 開(kāi)發(fā)者
    寫(xiě)的還不錯(cuò)。支持樓主,鄙視那個(gè)說(shuō)臟話(huà)的。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2008-07-29 09:17 aa
    你個(gè)只會(huì)說(shuō)垃圾的傻B  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2008-08-05 16:45 飛飛
    @ice
    你媽B你有本事你自己寫(xiě)一個(gè)出來(lái),人家寫(xiě)的不好至少人家給大家分享了,我想大家共同討論才有助于共同提升中國(guó)程序員的整體水平吧,你在這兒瞎扯淡有用嗎?
    還是為了顯示自己很牛B???  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-08-06 23:09 風(fēng)中青竹
    不錯(cuò),寫(xiě)得挺詳細(xì)哦?。。?

    謝謝了!!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-08-19 14:23 afda
    我靠,終于可以運(yùn)行了。不錯(cuò)。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-08-28 20:24 wandao
    請(qǐng)問(wèn):一:無(wú)返回值的存儲(chǔ)過(guò)程中 HYQ.B_ID , HYQ是什么,B_ID 是什么?謝謝!!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2008-08-28 21:00 呵呵
    我在oracle 9i 的 isqlplus 中運(yùn)行 :
    CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS
    BEGIN
    SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;
    END TESTB;
    老報(bào)錯(cuò)怎么回事?TESTTB 我也建了  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-09-23 15:32 octopus754
    "ice" 同學(xué),通常情況下,高手是會(huì)尊重任何人的勞動(dòng)成果的.  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2008-10-08 13:34 紅狼
    樓主好樣的!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-10-16 17:01 hoho
    非常感謝! 學(xué)習(xí)了  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-10-23 08:53
    謝謝  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-10-26 19:16 虎虎
    太好了
      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2008-11-28 15:12 linyupei
    我已經(jīng)加你QQ了 有問(wèn)題請(qǐng)教要回復(fù)哦!
    真的挺好的  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-01-06 22:11 大雨
    很好,學(xué)習(xí)了,不管怎樣都要努力!樓主肯分享真是太好了,大家都是中國(guó)人,又都是學(xué)程序的,不要罵來(lái)罵去了。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-01-14 18:24 123
    mark  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2009-02-03 17:43 aa
    很好 很常久都帖子啊  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-02-25 21:12 ICC
    謝謝了。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-03-10 14:02 夢(mèng)想
    你提供的例子對(duì)我?guī)椭艽螅浅8兄x!
    愿中國(guó)的程序員早日達(dá)到世界水平,領(lǐng)先世界科技。
      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-03-13 13:37 copper
    謝謝了,寫(xiě)的相當(dāng)不錯(cuò),支持樓主。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-04-04 22:57 小蛇
    謝謝樓主分享, 對(duì)java調(diào)用的oracle procedure的介紹很簡(jiǎn)潔,適合快速入門(mén)。
    要知道這篇貼子的主要目的是介紹基本技術(shù),不是什么程序設(shè)計(jì)技巧和架構(gòu)。
    我沒(méi)看出來(lái)哪點(diǎn)垃圾,@ice其實(shí)才是一垃圾,是豬,是傻B。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-04-27 18:46 hu
    多謝樓主!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-06-11 10:12 驛陸♂湮華↘
    java調(diào)用我明白,可是在PL/SQL中怎么用call語(yǔ)句調(diào)用含out參數(shù)的存儲(chǔ)過(guò)程,弄了半天也不取不出來(lái)參數(shù)值,如果LZ知道,告知一下,謝謝!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-07-03 13:55 xiao
    proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2009-07-03 15:38 nc000
    proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); 中的1是指什么,麻煩給說(shuō)明一下  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2010-03-09 14:59 tyzqqq123=163.com
    寫(xiě)的好,清晰而簡(jiǎn)約,有國(guó)外技術(shù)文章的風(fēng)格。
    其實(shí)簡(jiǎn)約而不簡(jiǎn)單的程序更能體現(xiàn)出水平,寫(xiě)的看上去很“難”有不代表技術(shù)就好。
    樓主的想法很好,應(yīng)該好好鼓勵(lì)樓主,應(yīng)該向老外學(xué)習(xí),不應(yīng)該總是一串串罵語(yǔ)。
    我想大家互相鼓勵(lì),相互尊重,中國(guó)的程序員一定很快達(dá)到世界水平.  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2010-03-17 12:58 過(guò)客
    寫(xiě)的很好,希望像LZ的 人 越來(lái)越多,不過(guò)提個(gè)建議啊 ,效率還是要考慮下 ,呵呵  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2010-03-22 14:20
    加我把,,,我建議還是建一個(gè)群交流~373769658  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2010-03-31 14:51 fg
    真是ice@ice
      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2010-09-20 09:51 hong
    樓主寫(xiě)的棒,總結(jié)的棒,如果中國(guó)的程序員都有這樣的想法和素質(zhì),我想我們國(guó)家的程序水平會(huì)有質(zhì)的飛躍。雖然罵人是不對(duì)的,但是我覺(jué)得樓上的那個(gè)ice才是個(gè)垃圾,鄙視那個(gè)罵人的傻B!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2011-05-03 11:28
    非常感謝。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2011-07-14 20:22 xxx
    niu bi 文檔?。?!  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2011-07-20 15:03 請(qǐng)教
    樓主,我想問(wèn)一下,當(dāng)使用游標(biāo)獲取了結(jié)果集后,如何關(guān)閉游標(biāo)?還是不需要關(guān)閉,調(diào)用完畢后自動(dòng)會(huì)釋放的?  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2012-03-23 14:52 wu
    頂下  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2012-04-12 23:52 lujb
    我想問(wèn)一下,怎么實(shí)現(xiàn)ORACLE的JAVA調(diào)用存儲(chǔ)過(guò)程,實(shí)現(xiàn)多線程?

    import java.sql.*;
    import java.sql.ResultSet;
    import oracle.jdbc.*;

    public class HistoryDataMove
    {

    public static void main(String[] args) {
    //System.out.println("11111");
    HistoryDataMove schedualed = new HistoryDataMove();
    schedualed.action();
    }

    class RunHandle0 implements Runnable {
    private OracleJavaProc proc = null;
    private String procName = "test";

    RunHandle0(String procName) {
    this.procName = procName;
    this.proc = new OracleJavaProc();
    }

    public void run() {
    try {
    System.out.println(procName);
    proc.procStartup(procName);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    public class OracleJavaProc {

    public void procStartup(String procName) {
    Connection conn = null;
    try {
    conn = DriverManager.getConnection("jdbc:default:connection:");

    CallableStatement proc = null;
    proc = conn.prepareCall("{call " + procName + "()}");
    proc.execute();
    }
    catch (Exception ex2) {
    ex2.printStackTrace();
    }
    finally{
    try {
    if(conn!=null){
    conn.close();
    }
    }
    catch (SQLException ex1) {
    }
    }
    }
    }
    public void action() {
    RunHandle0 t1 = new RunHandle0("HISDATA_MOVE.test");
    Thread thread1 = new Thread(t1);
    thread1.start();
    RunHandle0 t2 = new RunHandle0("HISDATA_MOVE.test1");
    Thread thread2 = new Thread(t2);
    thread2.start();
    }
    }

    我在myeclipse可以實(shí)現(xiàn)多線程,但在ORACLE那,只能是單線程順線執(zhí)行
    望回復(fù):lujbmail@163.com  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2012-09-10 21:03 路人甲乙丙
    樓主。。你那個(gè)返回列表,就是輸出參數(shù)是游標(biāo)的, 調(diào)用存儲(chǔ)存過(guò)程,不關(guān)閉游標(biāo)? 好像這是不允許的,所以存諸返回結(jié)果集,然后在JAVA 中調(diào)用,這樣的寫(xiě)法不合理,會(huì)被領(lǐng)導(dǎo)罵啊。。 有沒(méi)有更好的方法呢?  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2012-11-10 15:28 菩提
    @ice
    賤人年年有,今年何其多?。?!
      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2012-12-04 14:26 費(fèi)華樂(lè)
    總結(jié)的很好,面試官就問(wèn)我java怎么調(diào)用存儲(chǔ)過(guò)程。
    我沒(méi)回答上來(lái)??戳四愕目偨Y(jié),清楚多了,謝謝?。。?nbsp; 回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2012-12-17 16:12 DDD
    SELECT TESTTB.什么 INTO PARA2 FROM TESTTB WHERE I_ID= PARA1; @呵呵  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2012-12-24 16:00 jac
    call HYB.TESTA(?,?)
    這部分是什么啊  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2013-03-24 12:21 ZW
    終于找到個(gè)我這種菜鳥(niǎo)能看懂的代碼啦,雪中送炭呀.頂  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2013-04-01 17:17 tim
    樓主,我想問(wèn)個(gè)問(wèn)題。我一直不知道你在開(kāi)頭寫(xiě)的這段
    CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS

    BEGIN

    INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);

    END TESTA;

    這些sql寫(xiě)在哪里?。课以陧?xiàng)目里要放在什么地方?這個(gè)問(wèn)題很困惑我!求助!
      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2013-04-10 17:32 hahaWOshiwho

    @tim寫(xiě)在PLsql developer上吧?或者oracle上?在數(shù)據(jù)庫(kù)上寫(xiě)存儲(chǔ)過(guò)程,然后用java調(diào)用.
      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2013-05-14 16:22 xiaoyu
    @tim
    這段肯定是放在數(shù)據(jù)庫(kù)里的啊,存儲(chǔ)過(guò)程就是保存在數(shù)據(jù)庫(kù)的一段代碼。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2013-06-13 18:22 chester
    請(qǐng)問(wèn)樓主 p_CURSOR 是什么?  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2013-06-20 10:47 手酸死
    @ice
    你個(gè)sb,兒子。你寫(xiě)的出來(lái)?  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2013-06-20 15:19 111
    @ice
    說(shuō)實(shí)話(huà)代碼沒(méi)細(xì)看 但是看到你說(shuō)話(huà) 我不鎮(zhèn)定了。 為什么美好的生活中總有你這種傻逼。 你是不以為你自己代表中國(guó)最先進(jìn)的生產(chǎn)力了。 達(dá)不到先進(jìn)就是有你這種垃圾  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2013-07-26 16:38 黑貓
    樓主,我在pl/sql中寫(xiě)
    CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS

    BEGIN

    INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);

    END TESTA;
    運(yùn)行程序是總是報(bào)java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列:
    PLS-00201: 必須聲明標(biāo)識(shí)符 'HYQ.TESTA'錯(cuò)誤  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2013-08-08 23:16 545
    操你妹  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2014-05-07 10:10 java編程
    @ice
    你媽逼的你會(huì)寫(xiě)你不寫(xiě)出來(lái),你沒(méi)有資格在說(shuō)罵別人,別他媽的自認(rèn)為是。小心被車(chē)給撞死。  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)[未登錄](méi) 2014-06-06 20:29 匿名
    游標(biāo)名字@chester
      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2014-08-06 10:58 czgwq344703887
    @little star
    中國(guó)的學(xué)問(wèn)博大精深,學(xué)無(wú)止境,支持樓主  回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2014-08-18 16:12 iversion
    SB一個(gè) 不解釋@ice
      回復(fù)  更多評(píng)論
      

    # re: 用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 2014-10-03 23:35 bean先森
    學(xué)習(xí)了  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 精品特级一级毛片免费观看| 免费va人成视频网站全| 亚洲午夜国产精品无卡| 在线免费观看你懂的| 亚洲精品视频在线免费| 最近免费最新高清中文字幕韩国| 久久亚洲精品中文字幕| 最近中文字幕2019高清免费| 亚洲综合区图片小说区| 在线视频精品免费| 久久精品国产99国产精品亚洲| 2020久久精品国产免费| 亚洲综合偷自成人网第页色| 成人av免费电影| 亚洲国产成人久久精品大牛影视| 成人爱做日本视频免费| 青青免费在线视频| 亚洲色偷偷综合亚洲AV伊人| 丝袜捆绑调教视频免费区| 久久久久亚洲精品美女| 中国人xxxxx69免费视频| 亚洲丰满熟女一区二区v| 成人免费视频软件网站| 国产成人不卡亚洲精品91| 亚洲精品人成无码中文毛片| 国产乱妇高清无乱码免费| 亚洲av色福利天堂| 亚洲三级在线免费观看| 久久久国产亚洲精品| 国产小视频在线观看免费| 欧洲精品码一区二区三区免费看| 区久久AAA片69亚洲| 免费人成毛片动漫在线播放| 亚洲欧洲综合在线| 最近中文字幕无吗免费高清 | 香蕉97超级碰碰碰免费公| 亚洲中文字幕无码中文字| 免费一区二区视频| 免费h视频在线观看| 91亚洲性爱在线视频| 国产男女猛烈无遮挡免费视频|