Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Chama um método de um objeto OLE.
Transact-SQL convenções de sintaxe
Sintaxe
sp_OAMethod objecttoken , methodname
[ , returnvalue OUTPUT ]
[ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]
[ ; ]
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
ObjectToken
O token de objeto de um objeto OLE que foi criado anteriormente usando sp_OACreate.
methodname
O nome do método do objeto OLE a ser chamado.
retornovalor SAÍDA
O valor de retorno do método do objeto OLE. Se especificado, deve ser uma variável local do tipo de dados apropriado.
Se o método retornar um único valor:
- especificar uma variável local para returnvalue, que retorna o valor de retorno do método na variável local; quer
- Não especifique returnValue, que retorna o valor de retorno do método para o cliente como um conjunto de resultados de coluna única e linha única.
Se o valor de retorno do método for um objeto OLE, returnvalue deverá ser uma variável local do tipo de dados int. Um token de objeto é armazenado na variável local e esse token de objeto pode ser usado com outros procedimentos armazenados de automação OLE.
Quando o valor de retorno do método é uma matriz, se returnvalue for especificado, ele será definido como NULL.
Um erro é gerado quando ocorre qualquer uma das seguintes situações:
- returnvalue é especificado, mas o método não retorna um valor.
- O método retorna uma matriz com mais de duas dimensões.
- O método retorna uma matriz como um parâmetro de saída.
[ @parametername = ] parâmetro [ SAÍDA ]
Um parâmetro de método. Se especificado, parâmetro deve ser um valor do tipo de dados apropriado.
Para obter o valor de retorno de um parâmetro de saída, parâmetro deve ser uma variável local do tipo de dados apropriado e OUTPUT deve ser especificado. Se um parâmetro constante for especificado, ou se OUTPUT não for especificado, qualquer valor de retorno de um parâmetro de saída será ignorado.
Se especificado, parametername deve ser o nome do parâmetro nomeado do Microsoft Visual Basic.
@parametername não é uma variável local Transact-SQL. O sinal de arroba (@) é removido e parametername é passado para o objeto OLE como o nome do parâmetro. Todos os parâmetros nomeados devem ser especificados depois que todos os parâmetros posicionais são especificados.
n
Um espaço reservado que indica que vários parâmetros podem ser especificados.
Observação
@parametername pode ser um parâmetro nomeado porque faz parte do método especificado e é passado para o objeto. Os outros parâmetros para este procedimento armazenado são especificados por posição, não por nome.
Valores de código de retorno
0 (êxito) ou um número diferente de zero (falha) que é o valor inteiro do HRESULT retornado pelo objeto de automação OLE.
Para obter mais informações sobre códigos de retorno HRESULT, códigos de retorno de automação OLE e informações de erro.
Conjunto de resultados
Se o valor de retorno do método for uma matriz com uma ou duas dimensões, a matriz será retornada ao cliente como um conjunto de resultados:
Uma matriz unidimensional é retornada ao cliente como um conjunto de resultados de linha única com tantas colunas quantas forem os elementos na matriz. Em outras palavras, a matriz é retornada como (colunas).
Uma matriz bidimensional é retornada ao cliente como um conjunto de resultados com tantas colunas quantos forem os elementos na primeira dimensão da matriz e com tantas linhas quantos forem os elementos na segunda dimensão da matriz. Em outras palavras, a matriz é retornada como (colunas, linhas).
Quando um valor de retorno de propriedade ou valor de retorno de método é uma matriz, sp_OAGetProperty ou sp_OAMethod retorna um conjunto de resultados para o cliente. (Os parâmetros de saída do método não podem ser matrizes.) Esses procedimentos examinam todos os valores de dados na matriz para determinar os tipos de dados e comprimentos de dados apropriados do SQL Server a serem usados para cada coluna do conjunto de resultados. Para uma coluna específica, esses procedimentos usam o tipo de dados e o comprimento necessários para representar todos os valores de dados nessa coluna.
Quando todos os valores de dados em uma coluna compartilham o mesmo tipo de dados, esse tipo de dados é usado para toda a coluna. Quando os valores de dados em uma coluna são de tipos de dados diferentes, o tipo de dados da coluna inteira é escolhido com base no gráfico a seguir.
| Int | flutuar | dinheiro | Data e hora | Varchar | Nvarchar | |
|---|---|---|---|---|---|---|
| Int | Int | flutuar | dinheiro | Varchar | Varchar | Nvarchar |
| flutuar | flutuar | flutuar | dinheiro | Varchar | Varchar | Nvarchar |
| dinheiro | dinheiro | dinheiro | dinheiro | Varchar | Varchar | Nvarchar |
| datetime | Varchar | Varchar | Varchar | datetime | Varchar | Nvarchar |
| Varchar | Varchar | Varchar | Varchar | Varchar | Varchar | Nvarchar |
| Nvarchar | Nvarchar | Nvarchar | Nvarchar | Nvarchar | Nvarchar | Nvarchar |
Comentários
Você também pode usar sp_OAMethod para obter um valor de propriedade.
Permissões
Requer associação ao sysadmin função de servidor fixa ou permissão de execução diretamente neste procedimento armazenado. A opção Ole Automation Procedures configuração do servidor deve ser habilitada para usar qualquer procedimento do sistema relacionado à automação OLE.
Exemplos
Um. Chamar um método
O exemplo a seguir chama o método Connect do objeto SQLServer SQLServer criado anteriormente. Substitua <password> por uma senha forte.
EXECUTE
@hr = sp_OAMethod
@object,
'Connect',
NULL,
'my_server',
'my_login',
'<password>';
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo @object;
RETURN;
END
B. Obter um imóvel
O exemplo a seguir obtém a propriedade HostName (do objeto SQLServer criado anteriormente) e a armazena em uma variável local.
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;