Udostępnij za pośrednictwem


sp_OAMethod (Transact-SQL)

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;