3.19. Retrieving Multiple Result Sets Using the Oracle Provider
Problem
You have an Oracle package that returns multiple result sets for related tables as REF CURSOR
data types. You want to load the data into a DataSet
.
Solution
Use the data type OracleType.Cursor
.
The solution creates a Command
for an Oracle package CURSPKG
that takes an EMPLOYEE_ID
input parameter. The package calls a stored procedure that returns two result sets—HR.EMPLOYEES
and HR.JOB_HISTORY
for the specified employee—as Oracle REF CURSOR
output parameters.
A DataAdapter
is created from the Command
, retrieves the result sets, and loads them into a DataSet
. A relation is created between the tables. Results are output to the console.
The Oracle package used in the solution is shown in Example 3-24, and the package body is shown in Example 3-25.
Example 3-24. Package: CURSPKG
CREATE OR REPLACE PACKAGE CURSPKG AS TYPE T_CURSOR IS REF CURSOR; PROCEDURE GetEmployeeWithJobHistory ( pEmployeeID IN NUMBER, rcEmployees OUT T_CURSOR, rcJobHistory OUT T_CURSOR); END CURSPKG;
Example 3-25. Package body: CURSPKG
CREATE OR REPLACE PACKAGE BODY CURSPKG AS PROCEDURE GetEmployeeWithJobHistory ( pEmployeeID IN NUMBER, rcEmployees OUT T_CURSOR, rcJobHistory OUT T_CURSOR ) IS V_CURSOR1 T_CURSOR; V_CURSOR2 T_CURSOR; BEGIN OPEN V_CURSOR1 FOR SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID = pEmployeeID; OPEN V_CURSOR2 FOR SELECT * FROM JOB_HISTORY WHERE EMPLOYEE_ID IN (SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE EMPLOYEE_ID = pEmployeeID); rcEmployees ...
Get ADO.NET 3.5 Cookbook, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.