ID do artigo: 174223 - Última revisão: quinta-feira, 1 de julho de 2004 - Revisão: 1.1

Como atualizar a coleção de parâmetros do ADO para um procedimento armazenado

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Recolher tudo

Sumário

Este artigo demonstra duas técnicas para preencher a coleção Parameters do ADO para um objeto de comando usando um procedimento armazenado.

Mais Informações

Considere este procedimento armazenado, que usa parâmetros de entrada, saídos e de retorno:
create proc sp_AdoTest( @InParam int, @OutParam int OUTPUT )
as
SELECT @OutParam = @InParam + 10
SELECT * FROM Authors
WHERE State <> 'CA'
RETURN @OutParam +10
				
coleção Parameters do ADO A precisa de um objeto para cada parâmetro e, mais importante, a propriedade de direção de cada parâmetro deve corresponder a ordem dos parâmetros na sintaxe de chamada.

O código a seguir demonstra como configurar a chamada para o procedimento armazenado e criar explicitamente o parâmetro de propriedades de objetos:
...
Set Cmd1 = New ADODB.Command
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText= "sp_AdoTest"

Set Param1 = Cmd1.CreateParameter(, adInteger, adParamReturnValue)
Cmd1.Parameters.Append Param1

Set Param2 = Cmd1.CreateParameter(, adInteger, adParamInput)
Param2.Value = 10
Cmd1.Parameters.Append Param2

Set Param3 = Cmd1.CreateParameter(, adInteger, adParamOutput)
Cmd1.Parameters.Append Param3

Set Rs1 = Cmd1.Execute()
				
Observação : esta técnica é perigosa, se o procedimento armazenado altera a ordem ou direção dos parâmetros, esse código deve ser alterada. Há uma quantidade menor alternativa, que obtém os mesmos resultados. Apenas listando o nome do procedimento armazenado para CommandText e atualizar a coleção de parâmetros, o ADO preenche automaticamente o conjunto Parameters, um para cada parâmetro necessário pelo procedimento armazenado. No entanto, uma desvantagem possível para esse método é a sobrecarga envolvida. Ele requer um round trip para o servidor para obter as informações de parâmetro e, portanto, há um impacto que se você criar os parâmetros de si mesmo no maior desempenho. Isso seria uma boa maneira de determinar as propriedades de parâmetros corretos para um procedimento. Use as informações retornadas para configurar os parâmetros no código, como demonstrado acima. Isso é demonstrado no código a seguir:
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "sp_AdoTest"
Cmd1.CommandType = adCmdStoredProc
Cmd1.Parameters.Refresh
Cmd1.Parameters(1).Value = 10

Set Rs1 = Cmd1.Execute()
				
isso gera exatamente o mesmo conjunto de linhas, mas permite que o ADO preencher a coleção de parâmetros automaticamente e corretamente (Embora esse código corretamente determina que o segundo parâmetro é um parâmetro de entrada).

Observação: Parameters.Refresh irá falhar em algumas situações ou retornar informações não está totalmente corretas. Parameters.Refresh é particularmente vulnerável quando usado em páginas ASP. Faça a consulta em "parameters.refresh" para localizar outros artigos que falam sobre alguns dos problemas associados com Parameter.refresh.

Referências

Para obter informações adicionais % 1, clique no número % 2 abaixo para ler o artigo % 2 na Base de dados de Conhecimento da Microsoft:
225897  (http://support.microsoft.com/kb/225897/EN-US/ ) ACC2000: Como utilizar parâmetros com ActiveX Data Objects (ADO) e o Jet

A informação contida neste artigo aplica-se a:
  • Microsoft ActiveX Data Objects 1.0
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft ActiveX Data Objects 2.7
Palavras-chave: 
kbmt kbdatabase kbhowto KB174223 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 174223  (http://support.microsoft.com/kb/174223/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.