Oracle
 sql >> Baza danych >  >> RDS >> Oracle

jak mogę uzyskać parametr jako varchar2 w Oracle?

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 jak 201405 001 zawiedzie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TO_DATE() Funkcja w Oracle

  2. Jak wywołać procedurę składowaną Oracle z azure Data Factory v2?

  3. Jak wstawić dwa wiersze?

  4. Wiele wartości maksymalnych w zapytaniu

  5. Błąd w procedurze składowanej Oracle