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
METADATAemglobal.asater constantes nomeadas ADO sempre disponíveis para um aplicativo da Web ASP)