Atualização: - Aparentemente depois de um pouco de pesquisa (já que não trabalho com Oracle) ADODB não suporta
adVariant
(que é 12
) e você deve usar adVarChar
(que é 200
) em vez de. Consulte A:ASP clássico chamando o procedimento armazenado Oracle com o driver OraOleadb
Deixando o restante da resposta abaixo, pois provavelmente ainda será relevante quando esse problema for corrigido.
A causa desse erro em particular é geralmente uma incompatibilidade de tipo de dados, uma vez que o ADODB fala com o provedor definido pela conexão.
Apenas olhando para a definição do procedimento no Oracle em comparação com o seu
ADODB.Command
objeto eu posso ver que o p_return
parâmetro parece estar incorreto. Falo sobre isso em uma resposta anterior
para uma pergunta semelhante
. De acordo com Mapeamento de tipo de dados (um ótimo recurso para mapeamento de tipo de dados no ADO)
adInteger
(que é 3
) mapeia para Int
no Oracle não Number
. Em vez disso, você deve usar adNumeric
(que é 131
) que deve corrigir esse erro específico. Tente mudar esta linha
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 3, 2)
para
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 131, 2)
Links úteis
- R:Usando o procedimento armazenado em ASP clássico .. execute e obtenha resultados
- R:Erro ADODB.Parameters '800a0e7c' O objeto de parâmetro está definido incorretamente. Informações inconsistentes ou incompletas foram fornecidas
(recomendo isso para aprender a usar
METADATA
emglobal.asa
ter constantes nomeadas ADO sempre disponíveis para um aplicativo da Web ASP)