![Oracle數(shù)據(jù)庫中存儲過程的學(xué)習(xí)實(shí)例_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/bc656fc7-18ef-4962-8f01-6ed7f09fe439/bc656fc7-18ef-4962-8f01-6ed7f09fe4391.gif)
![Oracle數(shù)據(jù)庫中存儲過程的學(xué)習(xí)實(shí)例_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/bc656fc7-18ef-4962-8f01-6ed7f09fe439/bc656fc7-18ef-4962-8f01-6ed7f09fe4392.gif)
![Oracle數(shù)據(jù)庫中存儲過程的學(xué)習(xí)實(shí)例_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/bc656fc7-18ef-4962-8f01-6ed7f09fe439/bc656fc7-18ef-4962-8f01-6ed7f09fe4393.gif)
![Oracle數(shù)據(jù)庫中存儲過程的學(xué)習(xí)實(shí)例_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/bc656fc7-18ef-4962-8f01-6ed7f09fe439/bc656fc7-18ef-4962-8f01-6ed7f09fe4394.gif)
![Oracle數(shù)據(jù)庫中存儲過程的學(xué)習(xí)實(shí)例_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/bc656fc7-18ef-4962-8f01-6ed7f09fe439/bc656fc7-18ef-4962-8f01-6ed7f09fe4395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、測試用表student:1.實(shí)例1: Oracle存儲過程返回結(jié)果集-聲明一個 packagecreateor replace packagepackage_pro_testastype cursor_rs is ref cursor;Procedureproc_test(p_rsout cursor_rs);end package_pro_test;-實(shí)現(xiàn)package體,創(chuàng)建存儲過程-IN 和OUT參數(shù)-java 將IN 參數(shù)傳給 CallableStatement對象是通過 setXXX 方法完成-的。該方法繼承自-PreparedStatement 。所傳入?yún)?shù)的類型決定了所用的set
2、XXX方法-(例如,用 setFloat 來傳入float 值等)。CREATE OR REPLACE PackageBody PACKAGE_PRO_TESTIsProcedureproc_test(p_rsout cursor_rs)isbegi nopen p_rs for 'select * from student;end proc_test;end PACKAGE_PRO_TEST;/java中調(diào)用存儲過程import java.sql.CallableStateme nt;import java.sql.C onn ecti on;import java.sql.Driv
3、erMa nager;import java.sql.ResultSet;import java.sql.Stateme nt;import oracle.jdbc.OracleResultSet;調(diào)用存儲過程獲取查詢結(jié)果集author gwy*/ public classTestl publicstatic void main(String args) Conn ecti on conn 二 null;Statement stmt =null;ResultSet rs =null;try Class.forName('oracle.jdbc.driver.OracleDriver&q
4、uot;);conn 二 DriverMa nager.getC onn ecti on( "jdbc:oracle:thi n:localhost:1521:orcl", "scott", "tiger");System.out.pr intln("連接成功!");核心代碼:通過call調(diào)用PACKAGE_PRO_TEST.proc_te存儲過程。通過數(shù)據(jù)庫連接對象 conn調(diào)用 prepareCall()方法創(chuàng)建 CallableStatement 對象。存儲過程調(diào)用形式:conn. prepareCall(“
5、call存儲過程名(?,?,)”) conn. prepareCall( “call 包名. 存儲過程名 (?,?, , ) ”)*/ CallableStatement cs = conn.prepareCall("call PACKAGE_PRO_TEST.proc_test(?)");/注冊輸出參數(shù)類型cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);cs.execute(); /獲取存儲過程返回的結(jié)果集 ResultSet ors = (ResultSet)cs.getObject(1);/迭代結(jié)果
6、集while(ors.next()System.out.println("學(xué)生編號:"+ors.getlnt("stu_id")+"學(xué)生姓名:"+ors.getString("stu_name')+"學(xué)生年齡:"+ors.getlnt("age"); catch (Exception e) e.printStackTrace(); finally if (rs != null) rs = null;if (stmt != null) stmt = null;if (conn 匸
7、 null ) conn 二 null2.實(shí)例2 :通過變量列表獲取單條記錄值/創(chuàng)建存儲過程:-in關(guān)鍵詞修飾的v_stuname為輸入?yún)?shù),out關(guān)鍵詞修飾的out_stuid, out_st un ame,out_age, out_result_stateme為輸出參數(shù) createor replaceprocedurepro_test(v_stunamein varchar,out_stuid out nu mber,out_st un ameout varchar;out_ageout nu mber,out_result_statme nt out varchar) is-聲明標(biāo)志標(biāo)
8、量flag nu mber;begi nflag:=0;begi n-stud;stu _n ame,ag為 stude n表中的字段,-out_stuid,out_stu name,out_ag為 返回參數(shù)select stud;stu_name;agento out_stuid,out_stu name,out_ageromstude ntwhere stu_ name二v_stu name;excepti onwhe n no _data_fo un dthe nflag:= 1;end;if flag>0 thenout_result_statme門上=查詢數(shù)據(jù)異常!'
9、elseout_result_statment:=成功獲取結(jié)果!' en dif;end;/java中調(diào)用該存儲過程import java.sql.CallableStateme nt;import java.sql.C onn ecti on;import java.sql.DriverMa nager;import java.sql.ResultSet;import java.sql.Stateme nt;import oracle.jdbc.OracleResultSet:/*調(diào)用存儲過程獲取單條記錄* author gwy*/public classTest2 publicst
10、atic void main(String args) Connection conn = null;Statement stmt =null;ResultSet rs =null;try /加載Oracled驅(qū)動Class.forName("oracle.jdbc.driver.OracleDriver");/創(chuàng)建數(shù)據(jù)庫連接對象conn = DriverManager.getConnection("jdbc:oracle:thin:localhost:1521:orcl", "scott" , "tige r"
11、);System.out.println(" 連接成功! ");/ 創(chuàng)建 CallableStatemen 對象CallableStatement cs = conn.prepareCal"l(call pro_test(?,?,?,?,?)");/給存儲過程的對應(yīng)輸入?yún)?shù)傳值 cs.setString(1,"tom1");/注冊存儲過程的輸出參數(shù)類型 (例:索引為 2的參數(shù)類型為 NUMBER 類型 )cs.registerOutParameter(2,oracle.jdbc.OracleTypes.NUMBE);cs.regist
12、erOutParameter(3,oracle.jdbc.OracleTypes.VARCHA R);cs.registerOutParameter(4,oracle.jdbc.OracleTypes.NUMBER ); cs.registerOutParameter(5, oracle.jdbc.OracleTypes.VARCHAR);cs.execute();System.out.println("學(xué)生編號:"+cs.getlnt(2)+"學(xué)生姓 名:"+cs.getString(3)+"學(xué)生年齡:"+cs.getInt(4);
13、System.out.pri ntln("異常:"+cs.getStri ng(5); catch (Excepti on e) e.pri ntStackTrace(); finally if (rs != null) rs = null;if (stmt != null) stmt = null;if (conn != null) conn 二 null;3.實(shí)例3:存儲過程的參數(shù)既作為輸入?yún)?shù)也作為輸出參數(shù)/創(chuàng)建存儲過程參數(shù)v_stuname被in和out關(guān)鍵字修飾,即 v_stuname既作為輸入?yún)?shù),也作為輸出參createor replaceprocedurep
14、ro_test2(v_stunamen outvarchar) isbegi nselect stu_name into v_stu namefrom stude nt wherestu_n ame=v_st un ame;excepti onwhe n n o_data_fo un dthe ndbms_output.put_li neC 沒有找到數(shù)據(jù)!');when othersthendbms_output.put_li neC 發(fā)生其它異常!');end;/java調(diào)用存儲過程importjava.sql.CallableStateme nt;importjava.sq
15、l.C onn ecti on;importjava.sql.DriverMa nager;importjava.sql.ResultSet;importjava.sql.Stateme nt;publicclass Test3 public static void main( Stri ng args) Conn ecti on conn 二n ull ;Stateme nt stmt =n ull ;ResultSet rs =nulltry Class.forName(.OracleDriver"oracle.jdbc.driver);conn = DriverManager.getConnection( "jdbc:oracle:thin:localhost:1521:orcl" "scott" , "tiger" );System.out.println(" 連接成功! ");CallableStatementcs = conn.prepareCall( "callpro_test2(?)"cs.setString(1,"tom1" );cs.registerOu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防治老鼠服務(wù)合同協(xié)議書
- 建筑樁基工程施工合同
- 電熱水器維修合同
- 法律行業(yè)智能訴訟輔助工具研發(fā)方案
- 地暖承包合同
- 教育行業(yè)管理與教學(xué)實(shí)踐指南
- 農(nóng)業(yè)環(huán)境保護(hù)與管理指導(dǎo)書
- DeepSeek簡單版使用指南
- 店面承包合作協(xié)議合同
- 集裝箱活動房租賃合同樣本
- XX學(xué)校服采購工作方案(含一封信、備案表、反饋表)
- GB/T 33107-2016工業(yè)用碳酸二甲酯
- GB/T 18938-2008家用和類似用途的面包片電烘烤器性能測試方法
- 簡約卡通小學(xué)生校園文明禮儀教育PPT模板
- 勞動合同法經(jīng)典講義
- 三位數(shù)乘一位數(shù)練習(xí)題(精選100道)
- 教學(xué)第二章-毫針刺法1課件
- 產(chǎn)業(yè)園區(qū)環(huán)保管家實(shí)踐和案例
- 醫(yī)學(xué)約束帶的使用課件
- 傳染病防控工作職能部門間協(xié)調(diào)機(jī)制及流程
- 社會團(tuán)體法定代表人登記表
評論
0/150
提交評論