Chociaż nie widzę nic złego w twoim przykładzie, zastanawiam się, czy uderza cię stary BindByName problem. Domyślnie ODP.NET wiąże parametry z zapytaniem w kolejności, w jakiej są dodawane do kolekcji, a nie na podstawie ich nazwy, jak chcesz. Spróbuj ustawić BindByName na true na twoim OracleCommand obiektu i sprawdź, czy to rozwiąże problem.
Miałem ten problem tyle razy, że używam własnej metody fabrycznej do tworzenia poleceń, które automatycznie ustawiają tę właściwość na true dla mnie.
Klasyczna bezużyteczna dokumentacja Oracle tutaj