Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Wywołuje metodę obiektu OLE.
Transact-SQL konwencje składni
Składnia
sp_OAMethod objecttoken , methodname
[ , returnvalue OUTPUT ]
[ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]
[ ; ]
Argumenty
Ważny
Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.
objecttoken
Token obiektu OLE, który został wcześniej utworzony przy użyciu sp_OACreate
.
nazwa_metody
Nazwa metody obiektu OLE do wywołania.
returnvalue WYJŚCIE
Wartość zwracana metody obiektu OLE. Jeśli zostanie określony, musi to być zmienna lokalna odpowiedniego typu danych.
Jeśli metoda zwraca pojedynczą wartość, wykonaj jedną z następujących czynności:
- określ zmienną lokalną dla returnvalue, która zwraca wartość zwracaną przez metodę w zmiennej lokalnej; lub
- nie należy określać wartości returnvalue, która zwraca wartość zwracaną przez metodę do klienta jako jednokolumny zestaw wyników z pojedynczym wierszem.
Jeśli zwracana wartość metody jest obiektem OLE, returnvalue musi być lokalną zmienną typu danych int. Token obiektu jest przechowywany w zmiennej lokalnej, a ten token obiektu może być używany z innymi procedurami składowanymi automatyzacji OLE.
Gdy wartość zwracana metody jest tablicą, jeśli określono returnvalue, jest ustawiona na wartość NULL
.
W przypadku wystąpienia jednego z następujących błędów występuje błąd:
- określono returnvalue, ale metoda nie zwraca wartości.
- Metoda zwraca tablicę z więcej niż dwoma wymiarami.
- Metoda zwraca tablicę jako parametr wyjściowy.
[ @parametername = ] parametr [ OUTPUT ]
Parametr metody. W przypadku określenia parametru musi być wartością odpowiedniego typu danych.
Aby uzyskać wartość zwracaną parametru wyjściowego, parametr musi być zmienną lokalną odpowiedniego typu danych, a OUTPUT
należy określić. Jeśli określono parametr stały lub jeśli OUTPUT
nie zostanie określony, zostanie zignorowana żadna wartość zwracana z parametru wyjściowego.
W przypadku określenia parametru nazwa_parametru musi być nazwą nazwanego parametru Microsoft Visual Basic.
@parametername nie jest zmienną lokalną Transact-SQL. Znak at (@
) jest usuwany, a nazwa parametru jest przekazywana do obiektu OLE jako nazwy parametru. Wszystkie nazwane parametry muszą być określone po określeniu wszystkich parametrów pozycyjnych.
n
Symbol zastępczy wskazujący, że można określić wiele parametrów.
Nuta
@parametername może być nazwanym parametrem, ponieważ jest częścią określonej metody i jest przekazywany do obiektu. Inne parametry dla tej procedury składowanej są określane według pozycji, a nie nazwy.
Zwracanie wartości kodu
0
(powodzenie) lub liczba niezerowa (niepowodzenie), która jest liczbą całkowitą HRESULT zwróconą przez obiekt automatyzacji OLE.
Aby uzyskać więcej informacji na temat kodów powrotnych HRESULT, kody powrotne automatyzacji OLE i informacje o błędach.
Zestaw wyników
Jeśli zwracana wartość metody jest tablicą z jednym lub dwoma wymiarami, tablica jest zwracana do klienta w zestawie wyników:
Tablica jednowymiarowa jest zwracana do klienta jako zestaw wyników z jednym wierszem z dowolną liczbą kolumn, ponieważ w tablicy znajdują się elementy. Innymi słowy, tablica jest zwracana jako (kolumny).
Tablica dwuwymiarowa jest zwracana do klienta jako zestaw wyników z dowolną liczbą kolumn, ponieważ istnieją elementy w pierwszym wymiarze tablicy i z dowolną liczbą wierszy, ponieważ istnieją elementy w drugim wymiarze tablicy. Innymi słowy, tablica jest zwracana jako (kolumny, wiersze).
Gdy wartość zwracana właściwości lub wartość zwracana metody jest tablicą, sp_OAGetProperty
lub sp_OAMethod
zwraca wynik ustawiony na klienta. (Parametry wyjściowe metody nie mogą być tablicami). Te procedury skanują wszystkie wartości danych w tablicy, aby określić odpowiednie typy danych i długości danych programu SQL Server do użycia dla każdej kolumny w zestawie wyników. W przypadku określonej kolumny te procedury używają typu danych i długości wymaganej do reprezentowania wszystkich wartości danych w tej kolumnie.
Gdy wszystkie wartości danych w kolumnie mają ten sam typ danych, ten typ danych jest używany dla całej kolumny. Gdy wartości danych w kolumnie mają różne typy danych, typ danych całej kolumny jest wybierany na podstawie poniższego wykresu.
Int | spławik | pieniądze | data/godzina | Varchar powiedział: | nvarchar | |
---|---|---|---|---|---|---|
zmiennoprzecinkowe | pieniędzy | varchar | varchar | nvarchar | ||
zmiennoprzecinkowe | zmiennoprzecinkowe | zmiennoprzecinkowe | pieniędzy | varchar | varchar | nvarchar |
pieniędzy | pieniędzy | pieniędzy | pieniędzy | varchar | varchar | nvarchar |
data/godzina | varchar | varchar | varchar | data/godzina | varchar | nvarchar |
varchar | varchar | varchar | varchar | varchar | varchar | nvarchar |
nvarchar | nvarchar | nvarchar | nvarchar | nvarchar | nvarchar | nvarchar |
Uwagi
Możesz również użyć sp_OAMethod
, aby uzyskać wartość właściwości.
Uprawnienia
Wymaga członkostwa w sysadmin stałej roli serwera lub wykonywania uprawnień bezpośrednio w tej procedurze składowanej. Aby można było używać dowolnej procedury systemowej powiązanej z automatyzacją OLE, należy włączyć opcję konfiguracji serwera Ole Automation.
Przykłady
Odp. Wywoływanie metody
Poniższy przykład wywołuje metodę Connect
wcześniej utworzonego obiektu SQLServer. Zastąp <password>
ciąg silnym hasłem.
EXECUTE
@hr = sp_OAMethod
@object,
'Connect',
NULL,
'my_server',
'my_login',
'<password>';
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo @object;
RETURN;
END
B. Pobieranie właściwości
Poniższy przykład pobiera właściwość HostName
(wcześniej utworzonego obiektu SQLServer
) i przechowuje ją w zmiennej lokalnej.
DECLARE @property AS VARCHAR (255);
EXECUTE
@hr = sp_OAMethod
@object, 'HostName',
@property OUTPUT;
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo @object;
RETURN;
END
PRINT @property;