sp_OAMethod (Transact-SQL)

Chiama un metodo di un oggetto OLE.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • objecttoken
    Token di un oggetto OLE creato in precedenza tramite sp_OACreate.

  • methodname
    Nome del metodo dell'oggetto OLE da chiamare.

  • returnvalue OUTPUT
    Valore restituito del metodo dell'oggetto OLE. Se specificato, deve essere una variabile locale del tipo di dati appropriato.

    Se il metodo restituisce un solo valore, è possibile specificare una variabile locale in returnvalue, con cui il valore del metodo viene restituito nella variabile locale, oppure omettere returnvalue. In questo caso il valore del metodo viene restituito al client come set di risultati con una sola colonna e una sola riga.

    Se il valore restituito del metodo è un oggetto OLE, returnvalue deve essere una variabile locale di tipo int. Nella variabile locale viene archiviato un token di oggetto utilizzabile in altre stored procedure di automazione OLE.

    Se si specifica returnvalue e il valore restituito del metodo è una matrice, il parametro viene impostato su NULL.

    Viene generato un errore in uno dei casi seguenti:

    • Si specifica returnvalue, ma il metodo non restituisce alcun valore.

    • Il metodo restituisce una matrice a più di due dimensioni.

    • Il metodo restituisce una matrice come parametro di output.

  • [ @parametername**=** ] parameter[ OUTPUT ]
    Parametro del metodo. Se specificato, parameter deve essere un valore con il tipo di dati appropriato.

    Per ottenere il valore restituito di un parametro di output, parameter deve essere una variabile locale con il tipo di dati appropriato ed è necessario specificare l'argomento OUTPUT. Se si specifica un parametro costante oppure OUTPUT viene omesso, qualsiasi valore restituito da un parametro di output viene ignorato.

    Se specificato, parametername deve essere il nome del parametro denominato MicrosoftVisual Basic. Si noti che @parameternamenon è una variabile locale Transact-SQL. Il simbolo di chiocciola (@) viene rimosso e parameternameviene passato all'oggetto OLE come nome di parametro. Tutti i parametri denominati devono essere specificati dopo tutti i parametri posizionali.

  • n
    Segnaposto che indica la possibilità di specificare più parametri.

    [!NOTA]

    @parametername può essere un parametro denominato in quanto fa parte del metodo specificato e viene passato all'oggetto. Gli altri parametri della stored procedure vengono specificati in base alla posizione e non in base al nome.

Valori restituiti

0 (esito positivo) o un numero diverso da zero (esito negativo) corrispondente al valore integer del codice HRESULT restituito dall'oggetto di automazione OLE.

Per ulteriori informazioni sui codici restituiti HRESULT, vedere Codici restituiti e informazioni sugli errori di automazione OLE.

Set di risultati

Se il valore restituito del metodo è una matrice a una o due dimensioni, la matrice viene restituita al client come set di risultati:

  • Una matrice unidimensionale viene restituita al client come set di risultati composto da una singola riga e da un numero di colonne pari al numero di elementi della matrice. In altri termini, la matrice viene restituita come (colonne).

  • Una matrice bidimensionale viene restituita al client come set di risultati composto da un numero di colonne pari al numero di elementi della prima dimensione della matrice e un numero di righe pari al numero di elementi della seconda dimensione della matrice. In altri termini, la matrice viene restituita come (colonne, righe).

Quando il valore restituito da una proprietà o un metodo è una matrice, sp_OAGetProperty o sp_OAMethod restituisce un set di risultati al client. I parametri di output dei metodi non possono essere rappresentati da matrici. Queste procedure eseguono la scansione di tutti i valori di dati della matrice per determinare quali sono i tipi di dati di SQL Server appropriati e la lunghezza dei dati da utilizzare per ogni colonna del set di risultati. Per una colonna specifica, queste procedure utilizzano il tipo di dati e la lunghezza necessari per rappresentare tutti i valori di dati della colonna.

Se a tutti i valori di dati di una colonna è associato lo stesso tipo di dati, tale tipo di dati viene utilizzato per l'intera colonna. Se i valori di dati di una colonna utilizzano tipi di dati diversi, il tipo di dati della colonna viene scelto in base allo schema seguente.

 

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

Osservazioni

È inoltre possibile utilizzare la stored procedure sp_OAMethod per recuperare un valore di proprietà.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del server sysadmin.

Esempi

A. Chiamata di un metodo

Nell'esempio seguente viene chiamato il metodo Connect dell'oggetto SQLServer creato in precedenza.

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

B. Recupero di una proprietà

Nell'esempio seguente la proprietà HostName dell'oggetto SQLServer creato in precedenza viene recuperata e archiviata in una variabile locale.

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