Acompanho o forum ha muito tempo (meu teclado nao esta acentuando, desculpem por isso). Usar VM WinXP eh osso...
Desde sempre utilizei linux + xhb.com + sqlrdd + oracle11g. Agora estou tentando ha varias semanas usar stored procedures e venho tendo problemas. Como muitos sabem, suporte simplesmente nao existe. No maximo o Luiz vez ou outra responde uma duvida com 2 perguntas totalmente fora de contexto... e isso vai se arrastando por meses e meses... como sempre.
Sei que tem amigos aqui que usam SQLRdd com sucesso (como tambem uso). Nao vim aqui para criticar a ferramenta.
Indo ao assunto:
Estou tentando usar win+harbour+ADO para acessar o Oracle.
Estou aprendendo sobre ADO... estou apanhando BASTANTE. Ja li todas mensagens do grupo, sintetizei bastante coisa interessante e continuo fazendo testes...
Com querys e recordsets, tudo bem... mas estou tentando passar parametros para uma procedure e retorna erro
TRY
oCnn := CreateObject( "ADODB.Connection" )
oRs := CreateObject( "ADODB.RecordSet" )
oCmd := CreateObject( "ADODB.Command" )
oCnn:ConnectionString := "Provider=OraOLEDB.Oracle;Data Source=oDS;User ID=oUSR;Password=oPWD;FetchSize=100;CacheType=Memory;PLSQLRSet=True;"
oCnn:Open()
oCmd:CommandText := "prc_saldo_cc"
oCmd:CommandType := adCmdStoredProc
oCmd:ActiveConnection := oCnn
oCmd:Parameters:Refresh()
oPrm1 := oCmd:CreateParameter("cVend",adVarChar,adParamInput)
oPrm1:Value := "0230"
oPrm2 := oCmd:CreateParameter("cFilial",adVarChar,adParamInput)
oPrm2:Value := "00"
oPrm3 := oCmd:CreateParameter("cDataIni",adVarChar,adParamInput)
oPrm3:Value := "20100101"
oPrm4 := oCmd:CreateParameter("cDataFim",adVarChar,adParamInput)
oPrm4:Value := "20130930"
oPrm5 := oCmd:CreateParameter("result",adDouble,adParamReturnValue)
No
oCmd:Parameters:Refresh()
o obj oErr retorna: REFRESH DISP_E_BADPARAMCOUNT
Ai eu retiro esse trecho... passa normalmente...
Quando coloco isso no final do codigo:
oCmd:Parameters:Append(oPrm1)
Retorna erro:
APPEND DISP_E_BADPARAMCOUNT
Se eu pulo o Append e vou direto ao Execute (independente de parametro ou nao)
oRs := oCmd:Execute()
Retorna erro:
EXECUTE DISP_E_UNKNOWNNAME
Vendo documentacao propria do ADO
http://msdn.microsoft.com/en-us/library/windows/desktop/ms676516(v=vs.85).aspx ou
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675101(v=vs.85).aspx
E fucando na internet, 'teoricamente' meu codigo estaria correto...
Alguem tem uma luz??
Abraco a todos!