Meskipun saya tidak melihat ada yang salah dengan contoh Anda, saya ingin tahu apakah Anda terkena BindByName lama masalah. Secara default, ODP.NET mengikat parameter ke kueri sesuai urutan penambahannya ke koleksi, bukan berdasarkan namanya seperti yang Anda inginkan. Coba atur BindByName untuk true di OracleCommand . Anda keberatan dan lihat apakah itu menyelesaikan masalah.
Saya sering mengalami masalah ini sehingga saya menggunakan metode pabrik saya sendiri untuk membuat perintah yang secara otomatis menyetel properti ini ke true untuk saya.
Dokumentasi Oracle klasik yang tidak berguna di sini