I've looked for 'proof' of why this is happening and the docs seem pretty non-existent.
Some of the data objects do not translate 1-to-1 with Oracle data types....even though they 'should'.
There should also be Oracle OLEDb specific data types that map 1-to-1. Like: OLEDBType.Decimal
Try the following change and see if it works (maybe also try adDecimal or the OLDDBtype above):
.ParameterB.Append .CreateParameter("param1", adInteger, adParamInput, , vdblDocNum)
.ParameterB.Append .CreateParameter("ErrNum", adInteger, adParamOutput, , intErrValue)