Sdílet prostřednictvím


SqlPipe.ExecuteAndSend(SqlCommand) Metoda

Definice

Spustí příkaz předaný jako parametr a odešle výsledky klientovi.

public:
 void ExecuteAndSend(System::Data::SqlClient::SqlCommand ^ command);
public void ExecuteAndSend (System.Data.SqlClient.SqlCommand command);
member this.ExecuteAndSend : System.Data.SqlClient.SqlCommand -> unit
Public Sub ExecuteAndSend (command As SqlCommand)

Parametry

command
SqlCommand

Objekt SqlCommand , který se má spustit.

Výjimky

Hodnota command je null.

Tato metoda není podporována u příkazů vázaných na mimoprocesová připojení.

Příklady

Následující příklad používá SqlConnection a SqlCommand k výběru řádků ze zdroje dat v uložené proceduře. Příklad pak použije SqlPipe příkaz ke spuštění příkazu a odeslání výsledků zpět klientovi.

[Microsoft.SqlServer.Server.SqlProcedure()]
public static void StoredProcExecuteCommand(int rating)
{
    // Connect through the context connection.
    using (SqlConnection connection = new SqlConnection("context connection=true"))
    {
        connection.Open();

        SqlCommand command = new SqlCommand(
            "SELECT VendorID, AccountNumber, Name FROM Purchasing.Vendor " +
            "WHERE CreditRating <= @rating", connection);
        command.Parameters.AddWithValue("@rating", rating);

        // Execute the command and send the results directly to the client.
        SqlContext.Pipe.ExecuteAndSend(command);
    }
}
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub StoredProcExecuteCommand(ByVal rating As Integer)
    Dim command As SqlCommand

    ' Connect through the context connection
    Using connection As New SqlConnection("context connection=true")
        connection.Open()

        command = New SqlCommand( _
            "SELECT VendorID, AccountNumber, Name FROM Purchasing.Vendor " & _
            "WHERE CreditRating <= @rating", connection)
        command.Parameters.AddWithValue("@rating", rating)

        ' Execute the command and send the results directly to the client
        SqlContext.Pipe.ExecuteAndSend(command)
    End Using
End Sub

Poznámky

Kromě skutečných výsledků se přímo klientovi odesílají také další zprávy a chyby.

Výstupní parametry a návratové hodnoty nejsou odesílány klientovi; jsou volajícímu k dispozici prostřednictvím kolekce parametrů objektu příkazu.

Pokud příkaz není vázaný na připojení v rámci procesu, InvalidOperationException vyvolá se příkaz . Tato metoda není podporována u příkazů vázaných na mimoprocesová připojení.

Pokud dojde k chybám v objektu SqlCommand , který byl odeslán, jsou do kanálu odeslány výjimky, ale kopie se odešle také volání spravovaného kódu. Pokud volající kód výjimku nezachytí, rozšíří se zásobník do kódu Transact-SQL a ve výstupu se zobrazí dvakrát. Pokud volající kód výjimku zachytí, příjemce kanálu stále uvidí chybu, ale nedojde k duplicitní chybě.

Platí pro