Acho que deveria ser esse:
With cmd
.Properties("PLSQLRSet") = TRUE
.ActiveConnection = conn
.CommandType = adCmdText
.CommandText = "{call their_package.get_product(?,?)}"
.NamedParameters = True
.Parameters.Append cmd.CreateParameter("rptid", adNumeric, adParamInput, 0, 98)
.Parameters.Append cmd.CreateParameter("scenario", adVarChar, adParamInput, 4, "decline001")
End With
...
Set rs = cmd.Execute
cmd.Properties("PLSQLRSet") = FALSE
Observação: Embora their_package.get_product() receba três parâmetros, apenas dois precisam ser vinculados porque os parâmetros do cursor Ref são automaticamente vinculados pelo provedor.
Para obter mais informações, consulte a documentação da Oracle:Oracle Provider for OLE Guia do desenvolvedor de banco de dados - "Usando OraOLEDB com Visual Basic"