I když na vašem příkladu nevidím nic špatného, zajímalo by mě, jestli vás nezasáhne starý BindByName problém. Ve výchozím nastavení ODP.NET váže parametry k dotazu v pořadí, ve kterém jsou přidány do kolekce, spíše než na základě jejich názvu, jak byste chtěli. Zkuste nastavit BindByName true ve vašem OracleCommand objekt a zjistěte, zda to problém vyřeší.
Tento problém jsem měl tolikrát, že používám vlastní tovární metodu k vytváření příkazů, které automaticky nastaví tuto vlastnost na true pro mě.
Klasická zbytečná dokumentace Oracle zde