Freigeben über


Vorgehensweise: Ausführen einer gespeicherten Prozedur (mithilfe der RPC-Syntax) sowie Verarbeiten von Rückgabecodes und Ausgabeparametern (OLE DB)

Gespeicherte SQL Server-Prozeduren können ganzzahlige Rückgabecodes und Ausgabeparameter aufweisen. Die Rückgabecodes und Ausgabeparameter werden im letzten Paket des Servers gesendet und stehen der Anwendung demnach erst dann zur Verfügung, wenn das Rowset vollständig freigegeben wurde. Wenn der Befehl mehrere Ergebnisse zurückgibt, stehen Ausgabeparameterdaten zur Verfügung, wenn IMultipleResults::GetResult DB_S_NORESULT zurückgibt oder die IMultipleResults-Schnittstelle vollständig freigegeben wird, je nachdem, was zuerst eintritt.

So verarbeiten Sie Rückgabecodes und Ausgabeparameter

  1. Erstellen Sie eine SQL-Anweisung, die die RPC-Escapesequenz verwendet.

  2. Rufen Sie die ICommandWithParameters::SetParameterInfo-Methode auf, um für den Anbieter Beschreibungen der Parameter bereitzustellen. Fügen Sie die Parameterinformationen in ein Array von PARAMBINDINFO-Strukturen ein.

  3. Erstellen Sie mithilfe eines Arrays von DBBINDING-Strukturen einen Satz von Bindungen (eine für jede Parametermarkierung).

  4. Erstellen Sie mithilfe der IAccessor::CreateAccessor-Methode einen Accessor für die definierten Parameter. CreateAccessor erstellt einen Accessor aus einem Satz von Bindungen.

  5. Füllen Sie die DBPARAMS-Struktur.

  6. Rufen Sie den Befehl Execute auf (in diesem Fall ein Aufruf einer gespeicherten Prozedur).

  7. Verarbeiten Sie das Rowset, und geben Sie es mithilfe der IRowset::Release-Methode frei.

  8. Verarbeiten Sie den Rückgabecode und die Ausgabeparameterwerte, die von der gespeicherten Prozedur erhalten wurden.

Beispiel

Das Beispiel zeigt, wie Sie ein Rowset, einen Rückgabecode und einen Ausgabeparameter verarbeiten. Resultsets werden nicht verarbeitet. Dies ist die gespeicherte Beispielprozedur, die die Anwendung verwendet.

USE AdventureWorks2008R2;
GO
DROP PROCEDURE myProc;
GO

CREATE PROCEDURE myProc 
    @inparam int,
    @outparam int OUTPUT

AS
SELECT Color, ListPrice 
FROM Production.Product WHERE Size > @inparam;
SELECT @outparam = 100

IF  (@outparam > 0)
    RETURN 999
ELSE
    RETURN 888;
GO

Den vollständigen Beispielcode finden Sie in der Datei InitializeAndEstablishConnection_B.cpp. Sie können von der Website mit SQL Server Downloads auf MSDN ein Archiv herunterladen, das das Beispiel enthält.

Dieses Beispiel wurde mit Microsoft Visual C++ 2005 entwickelt.

SicherheitshinweisSicherheitshinweis

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Wenn die Windows-Authentifizierung nicht verfügbar ist, fordern Sie Benutzer auf, ihre Anmeldeinformationen zur Laufzeit einzugeben. Die Anmeldeinformationen sollten nicht in einer Datei gespeichert werden. Wenn Sie die Anmeldeinformationen speichern müssen, sollten Sie sie mit der Win32 Crypto-API verschlüsseln.