sp_OAMethod (Transact-SQL)

Gilt für:SQL Server

Ruft eine Methode eines OLE-Objekts auf.

Transact-SQL-Syntaxkonventionen

Syntax

  
sp_OAMethod objecttoken , methodname  
    [ , returnvalue OUTPUT ]   
    [ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]   

Argumente

objecttoken
Das Objekttoken eines zuvor mit sp_OACreateerstellten OLE-Objekts.

Methodname
Der Name der Methode des OLE-Objekts, das aufgerufen wird.

ReturnvalueOUTPUT
Der Rückgabewert der Methode des OLE-Objekts. Wenn angegeben, muss es sich um eine lokale Variable vom entsprechenden Datentyp handeln.

Wenn die Methode einen einzelnen Wert zurückgibt, geben Sie entweder eine lokale Variable für den Rückgabewert an, die den Rückgabewert der Methode in der lokalen Variablen zurückgibt, oder geben Sie keinen Rückgabewert an, der den Rückgabewert der Methode an den Client als einspaltiges Ergebnisset zurückgibt.

Wenn der Rückgabewert der Methode ein OLE-Objekt ist, muss der Rückgabewert eine lokale Variable des Datentyps "int" sein. Ein Objekttoken wird in der lokalen Variablen gespeichert, und dieses Objekttoken kann mit anderen gespeicherten OLE-Automatisierungsprozeduren verwendet werden.

Wenn der Rückgabewert der Methode ein Array ist, wenn der Rückgabewert angegeben wird, wird er auf NULL festgelegt.

Unter folgenden Bedingungen wird ein Fehler ausgegeben:

  • "returnvalue" wird angegeben, aber die Methode gibt keinen Wert zurück.

  • Die Methode gibt ein Array mit mehr als zwei Dimensionen zurück.

  • Die Methode gibt ein Array als Ausgabeparameter zurück.

[ _@parametername = ] parameter[ OUTPUT ] Ist ein Methodenparameter. Wenn angegeben, muss der Parameter ein Wert des entsprechenden Datentyps sein.

Um den Rückgabewert eines Ausgabeparameters abzurufen, muss der Parameter eine lokale Variable des entsprechenden Datentyps sein, und OUTPUT muss angegeben werden. Wenn ein Konstantenparameter angegeben wird oder output nicht angegeben wird, wird ein Rückgabewert eines Ausgabeparameters ignoriert.

Wenn angegeben, muss der Parametername der Name des benannten Parameters von Microsoft Visual Basic sein. Beachten Sie, dass @_parametername_is keine lokale Transact-SQL-Variable. Das At-Zeichen (@) wird entfernt, und der Parameternamewird als Parametername an das OLE-Objekt übergeben. Alle benannten Parameter müssen nach den Positionsparametern angegeben werden.

n
Ein Platzhalter, der anzeigt, dass mehrere Parameter angegeben werden können.

Hinweis

@parametername kann ein benannter Parameter sein, da er Teil der angegebenen Methode ist und an das Objekt übergeben wird. Die anderen Parameter für diese gespeicherte Prozedur werden nicht nach dem Namen, sondern nach der Position angegeben.

Rückgabecodewerte

0 (Erfolg) oder eine Zahl ungleich Null (Fehler), die dem ganzzahligen Wert von HRESULT entspricht, der vom OLE-Automatisierungsobjekt zurückgegeben wird.

Weitere Informationen zu HRESULT-Rückgabecodes, OLE-Automatisierungs-Rückgabecodes und Fehlerinformationen.

Resultsets

Wenn die Methode ein Array mit ein oder zwei Dimensionen zurückgibt, wird das Array dem Client folgendermaßen als Resultset zurückgegeben:

  • Ein eindimensionales Array wird dem Client als einzeiliges Resultset zurückgegeben, das so viele Spalten wie Elemente im Array enthält. Das Array wird also als (Spalten) zurückgegeben.

  • Ein zweidimensionales Array wird dem Client als Resultset zurückgegeben, dessen Anzahl an Spalten der Anzahl der Elemente in der ersten Dimension des Arrays entspricht und dessen Anzahl an Zeilen der Anzahl der Elemente in der zweiten Dimension des Arrays entspricht. Das Array wird also als (Spalten, Zeilen) zurückgegeben.

Wenn ein Rückgabewert oder ein Methodenrückgabewert ein Array ist, gibt sp_OAGetProperty oder sp_OAMethod einen Resultset an den Client zurück. (Methodenausgabeparameter dürfen keine Arrays sein.) Diese Verfahren scannen alle Datenwerte im Array, um die entsprechenden SQL Server-Datentypen und Datenlängen zu bestimmen, die für jede Spalte im Resultset verwendet werden sollen. Für eine bestimmte Spalte verwenden diese Prozeduren den Datentyp und die -länge, die erforderlich sind, um alle Datenwerte in dieser Spalte darzustellen.

Wenn alle Datenwerte einer Spalte denselben Datentyp aufweisen, wird dieser Datentyp für die gesamte Spalte verwendet. Wenn Datenwerte in einer Spalte unterschiedliche Datentypen verwenden, wird der Datentyp für die gesamte Spalte entsprechend der folgenden Tabelle ausgewählt.

INT float money datetime varchar nvarchar
int int float money varchar varchar nvarchar
float float float money varchar varchar nvarchar
money money money money varchar varchar nvarchar
datetime varchar varchar varchar datetime varchar nvarchar
varchar varchar varchar varchar varchar varchar nvarchar
nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar

Hinweise

Sie können auch sp_OAMethod verwenden, um einen Eigenschaftswert abzurufen.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle "sysadmin " oder führt die Berechtigung direkt für diese gespeicherte Prozedur aus. Ole Automation ProceduresDie Konfiguration muss aktiviert sein, um alle Systemprozeduren im Zusammenhang mit der OLE-Automatisierung zu verwenden.

Beispiele

.A Aufrufen einer Methode

Im folgenden Beispiel wird die Connect Methode des zuvor erstellten SQLServer-Objekts aufgerufen.

EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server',  
    'my_login', 'my_password';  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object  
    RETURN  
END;  

B. Abrufen einer Eigenschaft

Im folgenden Beispiel wird die HostName Eigenschaft (des zuvor erstellten SQLServer-Objekts) und in einer lokalen Variablen gespeichert.

DECLARE @property varchar(255);  
EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT;  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object  
    RETURN  
END;  
PRINT @property;  

Weitere Informationen

Gespeicherte OLE-Automatisierungsprozeduren (Transact-SQL)
OLE-Automatisierungsbeispielskript