Istnieje co najmniej 10 przeciążeń OracleParameterCollection.Add
metoda. Wygląda na to, że przypadkowo zadzwoniłeś do niewłaściwego.
Wierzę, że ten, którego chcesz, to Add(string, OracleDbType, int, object, ParameterDirection)
, w takim przypadku brakuje tylko wartości dla object
parametr. Ten parametr powinien zawierać początkową wartość parametru Oracle, którego używasz. W twoim przypadku jednak wartość początkowa nie ma znaczenia, ponieważ jest to out
parametr. Dodaj null
po 50
a wywołanie procedury składowanej powinno się powieść.
Ten, do którego zadzwoniłeś, to Add(string, OracleDbType, object, ParameterDirection)
. Rozmiar 50
został zinterpretowany jako wartość początkowa parametru. Nie jestem pewien, jak zinterpretować błąd zwracany przez Oracle („błąd liczbowy lub wartościowy”) – oznacza to dla mnie, że Oracle próbował przekonwertować ciąg na liczbę i nie powiodło się. Być może wartość 50
nadpisuje typ OracleDbType.Varchar2
więc Oracle oczekuje liczby, a nie łańcucha?
Wystąpiło kilka innych problemów, które znalazłem:
- Czy
command.Parameters["SP_REQ_NUM"]
byćcommand.Parameters["SP_NUM"]
? - Twoja procedura składowana nie zwraca liczby; wywołanie
Convert.ToInt32
na łańcuchu, takim jak201405 001
zawiedzie.