Sdílet prostřednictvím


Postupy: Použití uložených procedur mapovaných pro sekvenční tvary výsledků

Tento druh uložené procedury může generovat více než jeden obrazec výsledku, ale víte, v jakém pořadí se výsledky vrátí. Porovnejte tento scénář se scénářem, ve kterém neznáte posloupnost vrácení. Další informace naleznete v tématu Postupy: Použití uložených procedur mapovaných pro více obrazců výsledků.

Příklad 1

Tady je T-SQL uložené procedury, která vrací více výsledných obrazců postupně:

CREATE PROCEDURE MultipleResultTypesSequentially  
AS  
select * from products  
select * from customers  
[Function(Name="dbo.MultipleResultTypesSequentially")]
[ResultType(typeof(MultipleResultTypesSequentiallyResult1))]
[ResultType(typeof(MultipleResultTypesSequentiallyResult2))]
public IMultipleResults MultipleResultTypesSequentially()
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
    return ((IMultipleResults)(result.ReturnValue));
}
<FunctionAttribute(Name:="dbo.MultipleResultTypesSequentially"), _
ResultType(GetType(MultipleResultTypesSequentiallyResult1)), _
ResultType(GetType(MultipleResultTypesSequentiallyResult2))> _
Public Function MultipleResultTypesSequentially() As IMultipleResults
    Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo))
    Return CType(result.ReturnValue, IMultipleResults)
End Function

Příklad 2

K provedení této uložené procedury byste použili kód podobný následujícímu.

Northwnd db = new Northwnd(@"c:\northwnd.mdf");

IMultipleResults sprocResults =
    db.MultipleResultTypesSequentially();

// First read products.
foreach (Product prod in sprocResults.GetResult<Product>())
{
    Console.WriteLine(prod.ProductID);
}

// Next read customers.
foreach (Customer cust in sprocResults.GetResult<Customer>())
{
    Console.WriteLine(cust.CustomerID);
}
Dim db As New Northwnd("c:\northwnd.mdf")

Dim sprocResults As IMultipleResults = _
    db.MultipleResultTypesSequentially

' First read products.
For Each prod As Product In sprocResults.GetResult(Of Product)()
    Console.WriteLine(prod.ProductID)
Next

' Next read customers.
For Each cust As Customer In sprocResults.GetResult(Of Customer)()
    Console.WriteLine(cust.CustomerID)
Next

Viz také