sp_OAMethod (Transact-SQL)
Chiama un metodo di un oggetto OLE.
Convenzioni 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 del 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 Microsoft Visual 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.
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.
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.
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
Vedere anche
Riferimento
Stored procedure di automazione OLE (Transact-SQL)
Altre risorse
Script di automazione OLE di esempio