Dela via


sp_OAMethod (Transact-SQL)

gäller för:SQL Server

Anropar en metod för ett OLE-objekt.

Transact-SQL syntaxkonventioner

Syntax

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

Argument

Viktig

Argument för utökade lagrade procedurer måste anges i den specifika ordning som beskrivs i avsnittet Syntax. Om parametrarna anges i fel ordning visas ett felmeddelande.

objekttoken

Objekttoken för ett OLE-objekt som tidigare skapades med hjälp av sp_OACreate.

Metodnamnet på OLE-objektet som ska anropas.

returnvalue OUTPUT

Returvärdet för ole-objektets metod. Om det anges måste det vara en lokal variabel av lämplig datatyp.

Om metoden returnerar ett enda värde, antingen:

  • ange en lokal variabel för returnvalue, som returnerar metodens returvärde i den lokala variabeln. eller
  • ange inte returnvalue, som returnerar metodens returvärde till klienten som en resultatuppsättning med en kolumn och en rad.

Om metodens returvärde är ett OLE-objekt måste returnvalue vara en lokal variabel av datatyp int. En objekttoken lagras i den lokala variabeln och den här objekttoken kan användas med andra OLE Automation-lagrade procedurer.

När metodens returvärde är en matris, om returnvalue anges, är den inställd på NULL.

Ett fel uppstår när något av följande inträffar:

  • returnvalue anges, men metoden returnerar inte något värde.
  • Metoden returnerar en matris med fler än två dimensioner.
  • Metoden returnerar en matris som en utdataparameter.

[ @parametername = ] parameter [ OUTPUT ]

En metodparameter. Om det anges måste parameter vara ett värde av lämplig datatyp.

För att hämta returvärdet för en utdataparameter måste parameter vara en lokal variabel av lämplig datatyp och OUTPUT måste anges. Om en konstant parameter anges, eller om OUTPUT inte har angetts, ignoreras ett returvärde från en utdataparameter.

Om det anges måste parameternamn vara namnet på den Microsoft Visual Basic-namngivna parametern. @parametername är inte en Transact-SQL lokal variabel. Vid-tecknet (@) tas bort och parameternamn skickas till OLE-objektet som parameternamn. Alla namngivna parametrar måste anges när alla positionsparametrar har angetts.

n

En platshållare som anger att flera parametrar kan anges.

Not

@parametername kan vara en namngiven parameter eftersom den är en del av den angivna metoden och skickas till objektet. De andra parametrarna för den här lagrade proceduren anges efter position, inte namn.

Returnera kodvärden

0 (lyckades) eller ett icke-nolltal (fel) som är heltalsvärdet för HRESULT som returneras av OLE Automation-objektet.

Mer information om HRESULT-returkoder finns returkoder för OLE Automation och felinformation.

Resultatuppsättning

Om metodens returvärde är en matris med en eller två dimensioner returneras matrisen till klienten som en resultatuppsättning:

  • En endimensionell matris returneras till klienten som en resultatuppsättning med en rad med så många kolumner som det finns element i matrisen. Med andra ord returneras matrisen som (kolumner).

  • En tvådimensionell matris returneras till klienten som en resultatuppsättning med så många kolumner som det finns element i matrisens första dimension och med så många rader som det finns element i matrisens andra dimension. Matrisen returneras med andra ord som (kolumner, rader).

När ett egenskapsreturvärde eller metodreturvärde är en matris returnerar sp_OAGetProperty eller sp_OAMethod ett resultat inställt på klienten. (Metodutdataparametrar kan inte vara matriser.) Dessa procedurer genomsöker alla datavärden i matrisen för att fastställa lämpliga SQL Server-datatyper och datalängder som ska användas för varje kolumn i resultatuppsättningen. För en viss kolumn använder dessa procedurer den datatyp och den längd som krävs för att representera alla datavärden i den kolumnen.

När alla datavärden i en kolumn delar samma datatyp används den datatypen för hela kolumnen. När datavärdena i en kolumn har olika datatyper väljs datatypen för hela kolumnen baserat på följande diagram.

Int flyta pengar datetime varchar nvarchar
int int flyttal pengar varchar varchar nvarchar
flyttal flyttal flyttal pengar varchar varchar nvarchar
pengar pengar pengar pengar varchar varchar nvarchar
datetime varchar varchar varchar datetime varchar nvarchar
varchar varchar varchar varchar varchar varchar nvarchar
nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar

Anmärkningar

Du kan också använda sp_OAMethod för att hämta ett egenskapsvärde.

Behörigheter

Kräver medlemskap i sysadmin fast serverroll eller kör behörighet direkt på den här lagrade proceduren. Alternativet Ole Automation-procedurer serverkonfiguration måste vara aktiverat för att kunna använda alla systemprocedurer som är relaterade till OLE Automation.

Exempel

A. Anropa en metod

I följande exempel anropas metoden Connect för det tidigare skapade objektet SQLServer.

EXEC @hr = sp_OAMethod @object,
    'Connect',
    NULL,
    'my_server',
    'my_login',
    'my_password';

IF @hr <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @object

    RETURN
END;

B. Hämta en egenskap

I följande exempel hämtas egenskapen HostName (för det tidigare skapade SQLServer-objektet) och lagrar den i en lokal variabel.

DECLARE @property VARCHAR(255);

EXEC @hr = sp_OAMethod @object,
    'HostName',
    @property OUTPUT;

IF @hr <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @object

    RETURN
END;

PRINT @property;