Artigo: 174223 - Última revisão: quinta-feira, 1 de Julho de 2004 - Revisão: 1.1

Como actualizar o conjunto 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 | Reduzir tudo

Sumário

Este artigo demonstra duas técnicas para preencher o conjunto de parâmetros do ADO para um objecto de comando utilizando um procedimento armazenado.

Mais Informação

Considere este procedimento armazenado, que utiliza parâmetros de entrada, saídos e de devolução:
create proc sp_AdoTest( @InParam int, @OutParam int OUTPUT )
as
SELECT @OutParam = @InParam + 10
SELECT * FROM Authors
WHERE State <> 'CA'
RETURN @OutParam +10
				
colecção de parâmetros do ADO O necessita de um objecto para cada parâmetro e, mais importante ainda, a propriedade de direcção de cada parâmetro deve corresponder à ordem dos parâmetros na sintaxe da chamada.

O código abaixo demonstra como configurar a chamada de procedimento armazenado e criar explicitamente o parâmetro propriedades de objectos:
...
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()
				
Nota : Esta técnica é prejudiciais que se o procedimento armazenado alterar a ordem ou a direcção dos parâmetros, este código tem de ser alterado. Existe uma quantidade mais pequena alternativa, que obtém os mesmos resultados. Apenas listando o nome do procedimento armazenado para CommandText e actualizar o conjunto de parâmetros, o ADO preenche automaticamente o conjunto de parâmetros, uma para cada parâmetro necessário, o procedimento armazenado. No entanto, um potencial desvantagem deste método é a sobrecarga envolvida. Requer uma viagem round ao servidor para obter as informações de parâmetro e, portanto, existe um melhor desempenho de visitas que se cria os parâmetros de si próprio. Isto seria uma boa forma de determinar as propriedades de parâmetros correctos para um procedimento. Utilize as informações devolvidas ao configurar os parâmetros no código como demonstrado acima. Esta situação é demonstrada no seguinte código:
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "sp_AdoTest"
Cmd1.CommandType = adCmdStoredProc
Cmd1.Parameters.Refresh
Cmd1.Parameters(1).Value = 10

Set Rs1 = Cmd1.Execute()
				
Isto gera exactamente o conjunto de linhas mesmo, mas permite ADO preencher a colecção de parâmetros automaticamente e correctamente (apesar deste código correctamente determina que o segundo parâmetro é um parâmetro de entrada).

NOTA: Parameters.refresh irá falhar em algumas situações ou devolver informações que não estão totalmente correctas. Parameters.Refresh é particularmente vulneráveis quando utilizados em páginas ASP. Introduza a consulta "parameters.refresh" para encontrar outros artigos que alguns dos problemas associados com Parameter.refresh falar.

Referências

Para mais informações % 1, clique no número de artigo % 2 abaixo para visualizar 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 o 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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 ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.