Tidak kurang dari 10 kelebihan OracleParameterCollection.Add
metode. Sepertinya Anda tidak sengaja menelepon orang yang salah.
Saya yakin yang Anda inginkan adalah Add(string, OracleDbType, int, object, ParameterDirection)
, dalam hal ini Anda hanya kehilangan nilai untuk object
parameter. Parameter ini harus berisi nilai awal untuk parameter Oracle yang Anda gunakan. Namun, dalam kasus Anda, nilai awal tidak masalah karena merupakan out
parameter. Tambahkan null
setelah 50
dan panggilan prosedur tersimpan Anda akan berhasil.
Yang Anda panggil adalah Add(string, OracleDbType, object, ParameterDirection)
. Ukuran 50
telah ditafsirkan sebagai nilai awal untuk parameter. Saya tidak yakin bagaimana menafsirkan kesalahan yang dikembalikan Oracle ("kesalahan numerik atau nilai") - yang menyiratkan kepada saya bahwa Oracle telah mencoba mengonversi string menjadi angka dan gagal. Mungkin nilainya 50
menimpa tipe OracleDbType.Varchar2
jadi Oracle mengharapkan angka daripada string?
Ada beberapa masalah lain yang saya temukan:
- Harus
command.Parameters["SP_REQ_NUM"]
menjadicommand.Parameters["SP_NUM"]
? - Prosedur tersimpan Anda tidak mengembalikan angka; memanggil
Convert.ToInt32
pada string seperti201405 001
akan gagal.