資源描述:
《c#調(diào)用oracle數(shù)據(jù)庫的存儲(chǔ)過程并返回結(jié)果集》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、C#調(diào)用Oracle數(shù)據(jù)庫的存儲(chǔ)過程并返回結(jié)果集C#調(diào)用Oracle數(shù)據(jù)庫的存儲(chǔ)過程并返回結(jié)果集.txt生活是過出來的,不是想出來的。放得下的是曾經(jīng),放不下的是記憶。無論我在哪里,我離你都只有一轉(zhuǎn)身的距離。一數(shù)據(jù)表:student(studentidvarchar2studentnamevarchar2)數(shù)據(jù): studentidstudentname 001 001 002 002 002 003第2步建包:CREATEORREPLACEPACKAGEPKG_SELECT_STUDENTASTYPET_CURSO
2、RISREFCURSOR;PROCEDUREGetusername(us_idINVarchar2,cur_nameOUTT_CURSOR);第3步建包體:CREATEORREPLACEPACKAGE BODYPKG_SELECT_STUDENTASPROCEDUREGetusername(us_idINvarchar2,cur_nameOUTT_CURSOR)ISBEGINOPENcur_nameFORSELECT*FROMstudentWHEREstudentid=us_id;ENDGetusername;ENDPKG_select_
3、student;第4步我的webform.cs文件:在文本框輸入ID,點(diǎn)擊按鈕查詢,有多條數(shù)據(jù)填充顯示在gatagrid里面privatevoidButton3_Click(objectsender,System.EventArgse){stringusid=this.TextBox1.Text.Trim();Selectopst=newSelectop();this.DataGrid1.DataSource=st.GetSelectAll(usid);this.DataGrid1.DataBind();}publicDataSetGet
4、SelectAll(stringusid){OracleConnectioncon=DBoracle.CreateConnection();OracleCommandcommand=newOracleCommand();DataSetds=newDataSet();try{command.Connection=con;command.CommandText="PKG_select_student.Getusername";command.CommandType=CommandType.StoredProcedure;command.Par
5、ameters.Add("us_id",OracleType.VarChar,10).Value=usid;command.Parameters.Add("cur_name",OracleType.Cursor);command.Parameters["cur_name"].Direction=ParameterDirection.Output;OracleDataAdapteradapter=newOracleDataAdapter(command);con.Open();//command.ExecuteNonQuery();//ad
6、apter.SelectCommand=command;adapter.Fill(ds);}catch(System.Exceptionex){throwex;}finally{con.Close();command.Dispose();//adapter.Dispose();}returnds;}oracle的存儲(chǔ)過程返回記錄集,關(guān)鍵之處是要用游標(biāo)。關(guān)于數(shù)據(jù)庫的游標(biāo)(cursor)大家肯定都接觸不少,我們能通過OPEN,FETCH,CLOSE操作控制游標(biāo)進(jìn)行各種方便的操作,這方面的例子我就不在重復(fù)了。我們目前要介紹的是游標(biāo)變量(curs
7、orvariable)。類似游標(biāo),游標(biāo)變量也是指向一個(gè)查詢結(jié)果集的當(dāng)前行。不同的是,游標(biāo)變量能為所有類型相似(type-compatible)的查詢打開,而并不是綁定到某一個(gè)特定的查詢。通過游標(biāo)變量,你能在數(shù)據(jù)庫的數(shù)據(jù)提取中獲得更多的方便。首先是建立表: CREATETABLELIHUAN.BILL_POINTS ( POINTS_IDNUMBER(10,0)NOTNULL, CUSTOMER_IDNUMBER(10,0)NOTNULL, BILL_POINT_NONUMBER(2,0)DEFAULT1NOTNU
8、LL, CONSTRAINTPK_BILL_POINTSPRIMARYKEY(POINTS_ID) ) /其次,建PACKAGE CREATEORREPLACEPACKAGELIH