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