Das Problem, das sich herausstellte, hatte nichts mit den Datentypen zu tun. Ich habe Int64 im Oracle-Parameter verwendet und es hat funktioniert, aber erst, nachdem ich die BindByName-Eigenschaft meines Command-Objekts auf „true“ gesetzt hatte.
Anscheinend ist der Standard für den .NET System.Data.OracleClient-Anbieter „BINDING BY NAME“, während der Standard für Oracle.DataAccess „BIND BY POSITION“ ist.
Es wäre schön gewesen, wenn die abgefangene Oracle-Ausnahme mehr Informationen enthalten hätte, z. B. welcher Parameter die Ausnahme ausgelöst hat. Dies hat mir möglicherweise geholfen, das Problem früher zu erkennen.