Le problème qui s'est avéré n'avait rien à voir avec les types de données. J'ai utilisé Int64 dans le paramètre Oracle et cela a fonctionné, mais seulement après avoir défini la propriété BindByName sur mon objet Command sur true.
Apparemment, la valeur par défaut pour le fournisseur .NET System.Data.OracleClient 'BINDING BY NAME', alors que la valeur par défaut pour Oracle.DataAccess est 'BIND BY POSITION'.
Cela aurait été bien si l'exception Oracle capturée contenait plus d'informations, comme le paramètre qui lançait l'exception. Cela m'a peut-être aidé à découvrir le problème plus tôt.