Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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;