Freigeben über


Gewusst wie: Verwenden von gespeicherten Prozeduren, um Rowsets zurückzugeben (LINQ to SQL)

Aktualisiert: November 2007

In diesem Beispiel wird ein Rowset von der Datenbank zurückgegeben. Er enthält einen Eingabeparameter, um das Ergebnis zu filtern.

Wenn Sie eine gespeicherte Prozedur ausführen, die einen Rowset zurückgibt, verwenden Sie eine Ergebnisklasse, die die Rückgabe aus der gespeicherten Prozedur speichert. Weitere Informationen finden Sie unter Analysieren von LINQ to SQL-Quellcode.

Beispiel

Im folgenden Beispiel wird eine gespeicherte Prozedur dargestellt, die Zeilen mit Kunden zurückgibt und anhand eines Eingabeparameters nur die Zeilen zurückgibt, die „London“ als Ort für den Kunden enthalten. Dieses Beispiel setzt eine zählbare CustomersByCityResult-Klasse voraus.

CREATE PROCEDURE [dbo].[Customers By City]
    (@param1 NVARCHAR(20))
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    SELECT CustomerID, ContactName, CompanyName, City from Customers
        as c where c.City=@param1
END
    <FunctionAttribute(Name:="dbo.Customers By City")> _
        Public Function CustomersByCity(<Parameter(DbType:="NVarChar(20)")> ByVal param1 As String) As ISingleResult(Of CustomersByCityResult)

        Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo), param1)
        Return CType(result.ReturnValue, ISingleResult(Of CustomersByCityResult))
    End Function

Sub ReturnRowset()
    ' Call the stored procedure.
    Dim db As New Northwnd("c:\northwnd.mdf")

    Dim result As IEnumerable(Of CustomersByCityResult) = _
        db.CustomersByCity("London")

    For Each cust As CustomersByCityResult In result
        Console.WriteLine("CustID={0}; City={1}", _
            cust.CustomerID, cust.City)
    Next

End Sub
[Function(Name="dbo.Customers By City")]
public ISingleResult<CustomersByCityResult> CustomersByCity([Parameter(DbType="NVarChar(20)")] string param1)
{
    IExecuteResult result = this.ExecuteMethodCall(this,         ((MethodInfo)(MethodInfo.GetCurrentMethod())), param1);
    return ((ISingleResult<CustomersByCityResult>)(result.ReturnValue));
}

// Call the stored procedure.
void ReturnRowset()
{
    Northwnd db = new Northwnd(@"c:\northwnd.mdf");

    ISingleResult<CustomersByCityResult> result =
        db.CustomersByCity("London");

    foreach (CustomersByCityResult cust in result)
    {
        Console.WriteLine("CustID={0}; City={1}", cust.CustomerID,
            cust.City);
    }
}

Siehe auch

Konzepte

Herunterladen von Beispieldatenbanken (LINQ to SQL)

Weitere Ressourcen

Gespeicherte Prozeduren (LINQ to SQL)