Není méně než 10 přetížení kódu OracleParameterCollection.Add
metoda. Zdá se, že jste omylem zavolali nesprávnému.
Věřím, že ten, který chcete, je Add(string, OracleDbType, int, object, ParameterDirection)
, v takovém případě vám pouze chybí hodnota pro object
parametr. Tento parametr by měl obsahovat počáteční hodnotu parametru Oracle, který používáte. Ve vašem případě však na počáteční hodnotě nezáleží, protože je out
parametr. Přidejte null
po 50
a vaše volání uložené procedury by mělo být úspěšné.
Volali jste Add(string, OracleDbType, object, ParameterDirection)
. Velikost 50
byla interpretována jako počáteční hodnota parametru. Nejsem si jistý, jak interpretovat chybu, kterou Oracle vrací ("numerická nebo hodnotová chyba") – to mi znamená, že se Oracle pokusil převést řetězec na číslo a selhal. Možná hodnota 50
přepíše typ OracleDbType.Varchar2
a tak Oracle očekává spíše číslo než řetězec?
Nalezl jsem ještě několik dalších problémů:
- Měl by
command.Parameters["SP_REQ_NUM"]
býtcommand.Parameters["SP_NUM"]
? - Uložená procedura nevrací číslo; volání
Convert.ToInt32
na řetězec, jako je201405 001
selže.