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

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

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

    鷹翔宇空

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

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

    這段時(shí)間開始學(xué)習(xí)寫存儲(chǔ)過程,主要原因還是因?yàn)楣ぷ餍枰桑緛硪詾楹芎唵蔚模珟捉?jīng)挫折,豪氣消磨殆盡,但總算搞通了,為了避免后來者少走彎路,特記述與此,同時(shí)亦對(duì)自己進(jìn)行鼓勵(lì)。

    一:無返回值的存儲(chǔ)過程

    存儲(chǔ)過程為:

    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ǔ)過程(非列表)

    存儲(chǔ)過程為:

    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ǔ)過程中的out列對(duì)應(yīng)的,如果out是在第一個(gè)位置,那就是proc.getString(1),如果是第三個(gè)位置,就是proc.getString(3),當(dāng)然也可以同時(shí)有多個(gè)返回值,那就是再多加幾個(gè)out參數(shù)了。

    三:返回列表

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

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

    CREATE OR REPLACE PACKAGE TESTPACKAGE  AS

     TYPE Test_CURSOR IS REF CURSOR;

    end TESTPACKAGE;

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

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

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

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

    Feedback

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

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

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

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

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

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

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

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

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

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

    CREATE OR REPLACE PACKAGE TESTPACKAGE AS

    TYPE Test_CURSOR IS REF CURSOR;

    end TESTPACKAGE;

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


    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測試:
    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ǔ)過程總結(jié) 2006-07-12 13:18 yclc
    似乎使用cStmt.getResultSet() 可以直接獲取procedure中執(zhí)行過的select  回復(fù)  更多評(píng)論
      

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    # re: 用java調(diào)用oracle存儲(chǔ)過程總結(jié) 2011-07-20 15:03 請(qǐng)教
    樓主,我想問一下,當(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ǔ)過程總結(jié)[未登錄] 2012-03-23 14:52 wu
    頂下  回復(fù)  更多評(píng)論
      

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

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

    # re: 用java調(diào)用oracle存儲(chǔ)過程總結(jié) 2012-12-04 14:26 費(fèi)華樂
    總結(jié)的很好,面試官就問我java怎么調(diào)用存儲(chǔ)過程。
    我沒回答上來。看了你的總結(jié),清楚多了,謝謝!!!  回復(fù)  更多評(píng)論
      

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

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

    # re: 用java調(diào)用oracle存儲(chǔ)過程總結(jié)[未登錄] 2013-04-01 17:17 tim
    樓主,我想問個(gè)問題。我一直不知道你在開頭寫的這段
    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àng)目里要放在什么地方?這個(gè)問題很困惑我!求助!
      回復(fù)  更多評(píng)論
      

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

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

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

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

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

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

    # re: 用java調(diào)用oracle存儲(chǔ)過程總結(jié) 2013-07-26 16:38 黑貓
    樓主,我在pl/sql中寫
    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ǔ)過程總結(jié) 2013-08-08 23:16 545
    操你妹  回復(fù)  更多評(píng)論
      

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

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

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

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

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

    主站蜘蛛池模板: 免费毛片在线视频| 中文字幕无码播放免费| 久久精品国产这里是免费| 99久久99热精品免费观看国产| 免费在线视频你懂的| 宅男666在线永久免费观看| 亚洲第一网站男人都懂| 久久精品国产亚洲AV网站| 亚洲午夜久久久久久尤物| www亚洲精品久久久乳| 免费看一区二区三区四区| 99在线观看视频免费| 日韩a级毛片免费视频| 国产亚洲精品拍拍拍拍拍| 久久亚洲sm情趣捆绑调教| 亚洲av无码一区二区三区在线播放| 一级特黄录像免费播放中文版| 久久大香伊焦在人线免费| 最新中文字幕电影免费观看| 亚洲人AV永久一区二区三区久久| 亚洲国产综合专区电影在线| 国产成人亚洲综合网站不卡| 久久久久久久国产免费看| 免费在线观看视频网站| 亚洲午夜av影院| 亚洲国产成人精品无码区在线秒播 | 无码毛片一区二区三区视频免费播放| 黄色网页在线免费观看| 免费观看激色视频网站bd| 亚洲欧洲中文日韩久久AV乱码| 亚洲成人动漫在线观看| 人妻18毛片a级毛片免费看| 国产香蕉免费精品视频| 亚洲日本中文字幕一区二区三区| 亚洲视频小说图片| 特级做a爰片毛片免费看| 我们的2018在线观看免费高清| 久久久久国产亚洲AV麻豆| 午夜在线a亚洲v天堂网2019| 中文字幕不卡免费视频| 日韩免费视频播放|