即興的靈感

          思維是一種藝術(shù); 藝術(shù)需要靈感。

          博客好友

          最新評(píng)論

          JAVA與Oracle存儲(chǔ)過(guò)程(一)

          ???在大型數(shù)據(jù)庫(kù)系統(tǒng)中,有兩個(gè)很重要作用的功能,那就是存儲(chǔ)過(guò)程和觸發(fā)器。在數(shù)據(jù)庫(kù)系統(tǒng)中無(wú)論是存儲(chǔ)過(guò)程還是觸發(fā)器,都是通過(guò)SQL 語(yǔ)句和控制流程語(yǔ)句的集合來(lái)完成的。相對(duì)來(lái)說(shuō),數(shù)據(jù)庫(kù)系統(tǒng)中的觸發(fā)器也是一種存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程在數(shù)據(jù)庫(kù)中運(yùn)算時(shí)自動(dòng)生成各種執(zhí)行方式,因此,大大提高了對(duì)其運(yùn)行時(shí)的執(zhí)行速度。在大型數(shù)據(jù)庫(kù)系統(tǒng)如Oracle、SQL Server中都不僅提供了用戶(hù)自定義存儲(chǔ)過(guò)程的功能,同時(shí)也提供了許多可作為工具進(jìn)行調(diào)用的系統(tǒng)自帶存儲(chǔ)過(guò)程。
          ???所謂存儲(chǔ)過(guò)程(Stored Procedure),就是一組用于完成特定數(shù)據(jù)庫(kù)功能的SQL 語(yǔ)句集,該SQL語(yǔ)句集經(jīng)過(guò)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)系統(tǒng)中。在使用時(shí)候,用戶(hù)通過(guò)指定已經(jīng)定義的存儲(chǔ)過(guò)程名字并給出相應(yīng)的存儲(chǔ)過(guò)程參數(shù)來(lái)調(diào)用并執(zhí)行它,從而完成一個(gè)或一系列的數(shù)據(jù)庫(kù)操作。
          ???由于J2EE體系一般建立大型的企業(yè)級(jí)應(yīng)用系統(tǒng),而一般都配備大型數(shù)據(jù)庫(kù)系統(tǒng)如Oracle或者SQL Server,在本文《JAVA與Oracle存儲(chǔ)過(guò)程》中將介紹JAVA跟Oracle存儲(chǔ)過(guò)程之間的相互應(yīng)用跟相互間的各種調(diào)用。
          ???一、JAVA調(diào)用Oracle存儲(chǔ)過(guò)程
          ???JAVA跟Oracle之間最常用的是JAVA調(diào)用Oracle的存儲(chǔ)過(guò)程,以下簡(jiǎn)要說(shuō)明下JAVA如何對(duì)Oracle存儲(chǔ)過(guò)程進(jìn)行調(diào)用。
          ???Ⅰ、不帶輸出參數(shù)情況
          ??????過(guò)程名稱(chēng)為pro1參數(shù)個(gè)數(shù)1個(gè),數(shù)據(jù)類(lèi)型為整形數(shù)據(jù)

          import ?java.sql. * ;?
          public ? class ?ProcedureNoArgs??
          ? {?
          public ? static ? void ?main(String?args[])? throws ?Exception?
          {?
          ??
          // 加載Oracle驅(qū)動(dòng)?
          ??
          DriverManager.registerDriver( new ?oracle.jdbc.driver.OracleDriver());?
          ??
          // 獲得Oracle數(shù)據(jù)庫(kù)連接?
          ??
          Connection?conn = DriverManager.getConnection( " jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd " );?

          ????
          // 創(chuàng)建存儲(chǔ)過(guò)程的對(duì)象?
          ????CallableStatement?c = conn.divpareCall( " {call?pro1(?)} " );?
          ?????
          ????
          // 給Oracle存儲(chǔ)過(guò)程的參數(shù)設(shè)置值?,將第一個(gè)參數(shù)的值設(shè)置成188?
          ????c.setInt( 1 , 188 );?
          ?????
          ????
          // 執(zhí)行Oracle存儲(chǔ)過(guò)程?
          ????c.execute();?
          ????conn.close();?
          }
          ?
          }
          ?

          ???Ⅱ、帶輸出參數(shù)的情況
          ???過(guò)程名稱(chēng)為pro2,參數(shù)個(gè)數(shù)2個(gè),數(shù)據(jù)類(lèi)型為整形數(shù)據(jù),返回值為整形類(lèi)型
          import?java.sql.*;?
          public?class?ProcedureWithArgs??
          ? {?
          public?static?void?main(String?args[])?throws?Exception?
          {?
          ??
          //加載Oracle驅(qū)動(dòng)?
          ??
          DriverManager.registerDriver(new?oracle.jdbc.driver.OracleDriver());?
          ??
          //獲得Oracle數(shù)據(jù)庫(kù)連接?
          ??
          Connection?conn = DriverManager.getConnection("jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd ");?

          ????
          //創(chuàng)建Oracle存儲(chǔ)過(guò)程的對(duì)象,調(diào)用存儲(chǔ)過(guò)程?
          ????CallableStatement?c=conn.divpareCall("{call?pro2(?,?)}");?
          ?????
          ????
          //給Oracle存儲(chǔ)過(guò)程的參數(shù)設(shè)置值?,將第一個(gè)參數(shù)的值設(shè)置成188?
          ????c.setInt(1,188);?
          ????//注冊(cè)存儲(chǔ)過(guò)程的第二個(gè)參數(shù)??
          ????? c.registerOutParameter(2,java.sql.Types.INTEGER);

          ????
          //執(zhí)行Oracle存儲(chǔ)過(guò)程?
          ????c.execute();?
          ???? ?//得到存儲(chǔ)過(guò)程的輸出參數(shù)值并打印出來(lái)
          ????? System.out.println (c.getInt(2));
          ???
          ????conn.close();?
          }
          ?
          }
          ?

          ???以上即是在JAVA中調(diào)用Oracle存儲(chǔ)過(guò)程的最簡(jiǎn)單的實(shí)例,接下來(lái)將介紹有關(guān)JAVA跟Oracle存儲(chǔ)過(guò)程的其他方面內(nèi)容。
          ???
          轉(zhuǎn)載請(qǐng)聲明出處,必究。



          ?
          鳳凰涅槃/浴火重生/馬不停蹄/只爭(zhēng)朝夕
          ???? 隱姓埋名/低調(diào)華麗/簡(jiǎn)單生活/完美人生

          posted on 2008-12-06 16:22 poetguo 閱讀(6290) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): OracleJAVA

          評(píng)論

          # re: JAVA與Oracle存儲(chǔ)過(guò)程(一) 2008-12-06 17:53 OracleSu

          學(xué)習(xí)Oracle中,多多指教  回復(fù)  更多評(píng)論   

          # re: JAVA與Oracle存儲(chǔ)過(guò)程(一) 2008-12-06 23:57 beyond

          還可以,知道java可以操作orcale的存儲(chǔ)過(guò)程  回復(fù)  更多評(píng)論   

          # re: JAVA與Oracle存儲(chǔ)過(guò)程(一)[未登錄](méi) 2008-12-08 16:35 zxbyh

          2008-12-06 23:57 by beyond
          還可以,知道java可以操作orcale的存儲(chǔ)過(guò)程
          ---------------------------------------
          寒餓....  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 稻城县| 浦北县| 康马县| 江阴市| 陈巴尔虎旗| 肥乡县| 福州市| 申扎县| 襄垣县| 卫辉市| 华蓥市| 关岭| 临汾市| 凌云县| 绥阳县| 安塞县| 定西市| 读书| 永寿县| 喀什市| 台东县| 都匀市| 崇阳县| 孝义市| 鸡泽县| 青川县| 安徽省| 肃北| 丹寨县| 北安市| 南木林县| 平湖市| 同德县| 长春市| 邻水| 榆林市| 澜沧| 涟水县| 莱阳市| 八宿县| 景东|