Bagikan melalui


Cara: Menggunakan Prosedur Tersimpan yang Dipetakan untuk Bentuk Hasil Berurutan

Prosedur tersimpan semacam ini dapat menghasilkan lebih dari satu bentuk hasil, tetapi Anda tahu dalam urutan apa hasilnya dikembalikan. Bandingkan skenario ini dengan skenario di mana Anda tidak mengetahui urutan pengembalian. Untuk informasi selengkapnya, lihat Cara: Menggunakan Prosedur Tersimpan yang Dipetakan untuk Beberapa Bentuk Hasil.

Contoh 1

Berikut adalah T-SQL dari prosedur tersimpan yang mengembalikan beberapa bentuk hasil secara berurutan:

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

Contoh 2

Anda akan menggunakan kode yang mirip dengan berikut ini untuk menjalankan prosedur tersimpan ini.

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

Lihat juga