Retrieve multiple Oracle Ref Cursor using .NET data Provider for Oracle
2008-06-19 21:25
411 查看
Introduction
InmyearlierarticleMultipleResultSetsinADO.netusingSqlClient,wehaveseenhowtoretrievemultipleresultsusingSqlclientagainstSQLServer.Thiswasafairlysimpleandstraightforward.WecanachievethesameagainstOracledatabasewithaslightdifference.Weneedtoironoutcoupleofthingsbeforewegettonutsandboltsofit.
WeneedSystem.Data.OracleClient.DllassemblythatisverysimilartoSystem.Data.SqlClient.Dll,.NETManagedProviderforOracleisnotapartof.NETVersion1.0,aseparatedownloadclickheretodownload.For.NETversion1.1,it’sgoingtobepartofthebundle.Ifyouarenewto.NetframeworkproviderforOraclereadmyarticlesoncode101Boostperformancewith.netdataproviderfororacle
WeneedastoredproceduretoreturnmultipleresultssetusingREFCURSOR.Fornovice,ArefcursorisaPL/SQLdatatypethatyoucanuseinaquerytofetchdata.EachrefcursorqueryisassociatedwithaPL/SQLfunctionthatreturnsastronglytypedrefcursor.
Letsgetfeetdirty
Createaoraclepackage,IassumeyouknowwhatapackagebythewayithastwopartsSpecificationandbody
PackageSpecification
Inmyearlierarticle
WeneedSystem.Data.OracleClient.DllassemblythatisverysimilartoSystem.Data.SqlClient.Dll,.NETManagedProviderforOracleisnotapartof.NETVersion1.0,aseparatedownload
WeneedastoredproceduretoreturnmultipleresultssetusingREFCURSOR.Fornovice,ArefcursorisaPL/SQLdatatypethatyoucanuseinaquerytofetchdata.EachrefcursorqueryisassociatedwithaPL/SQLfunctionthatreturnsastronglytypedrefcursor.
Letsgetfeetdirty
Createaoraclepackage,IassumeyouknowwhatapackagebythewayithastwopartsSpecificationandbody
PackageSpecification
CREATEORREPLACEPACKAGEPKG_MUltiResultsetas TYPEMyRefCurisREFCURSOR; procedureGetReadOnlyData(EmpCurOUTMyRefCur, DeptCurOUTMyRefCur, SalCurOUTMyRefCur); END;
PackagebodyCREATEORREPLACEPACKAGEBODYPKG_MUltiResultsetas PROCEDUREGetReadOnlyData(EmpCurOUTMyRefCur, DeptCurOUTMyRefCur, SalCurOUTMyRefCur) IS BEGIN openEmpCurforselect*fromemp; openDeptCurforselect*fromdept; openSalCurforselect*fromsalgrade; END; END; Letsusgettotheclientparttoaccessthisstoredprocedure.WewillestablishconnectiontoOracledatabaseretrievedatafromthreetablesinoneshotandfillupthedatasetandbindthedatatoDataGrids.IamusingDatasetyoucantryitwithOracleDataReaderaswell. NOTE:ThePrefixisalwaysOracleforalltheclassesinSyatem.Data.OracleClientnamespace.Referencenamespaces
usingSystem.Data.OracleClient;
usingSystem.Data;
PrivatevoidGetData_Click(objectsender,System.EventArgse)
{
try
{
//ConnecttoDatabase
OracleConnectionoCon=newOracleConnection
("Datasource=Firstdb;userid=scott;password=tiger");
oCon.Open();
//CommandObject
OracleCommandoCmd=newOracleCommand
("PKG_MUltiResultset.GetReadOnlyData",oCon);
//StoredProcedure
oCmd.CommandType=CommandType.StoredProcedure;
//CreateParameterObject
oCmd.Parameters.Add(newOracleParameter
("empcur",OracleType.Cursor)).Direction=ParameterDirection.Output;
oCmd.Parameters.Add(newOracleParameter
("DeptCur",OracleType.Cursor)).Direction=ParameterDirection.Output;
oCmd.Parameters.Add(newOracleParameter
("SalCur",OracleType.Cursor)).Direction=ParameterDirection.Output;
//InstatiateDataset
DataSetDs=newDataSet();
//InstatiateDataAdopter
OracleDataAdapteroAdp=newOracleDataAdapter(oCmd);
//FillDataSet
oAdp.Fill(Ds);
//BindDatatoGrids
dataGrid1.SetDataBinding(Ds,"Table");
dataGrid2.SetDataBinding(Ds,"Table1");
dataGrid3.SetDataBinding(Ds,"Table2");
}
catch(Exceptionx)
{
MessageBox.Show(x.Message);
}
}
相关文章推荐
- Retrieve multiple Oracle Ref Cursor using .NET data Provider for Oracle
- Retrieve multiple Oracle Ref Cursor using .NET data Provider for Oracle
- Bulk Operations Using Oracle Data Provider for .NET (ODP.NET) 转载
- Oracle Data Provider for .NET 的使用经验(3)
- Oracle Data Provider for .NET连接oracle数据库(01)
- Oracle Data Provider for .NET 的使用经验
- Oracle Data Provider for .NET
- Oracle Data Provider for .NET连接oracle数据库(02)
- Oracle Data Provider for .NET的使用(二)-驱动更换与注意事项
- Oracle Data Provider for .NET的使用(三)-ORACLE与.NET类型对应关系
- Oracle Data Provider for .NET now on NuGet
- Oracle Data Provider for .NET, Managed Driver Beta 11.2.0.3.50 .net 的福音
- Oracle Data Provider for .NET的使用(托管与非托管(一))
- Oracle Data Provider for .NET 的使用经验
- Oracle Data Provider for .NET
- ASP.NET 中 .NET Data Provider for Oracle 的连接漏洞
- the oracle data provider for DotNet 的比较
- Oracle Data Provider for .NET
- Oracle Data Provider for .NET
- Oracle Data Provider for .NET 的使用经验(1)