Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich einen Parameter als varchar2 in Oracle ausgeben

Es gibt nicht weniger als 10 Überladungen des <-Codes>OracleParameterCollection.Hinzufügen Methode. Anscheinend hast du versehentlich den falschen angerufen.

Ich glaube, Sie möchten Hinzufügen (String, OracleDbType, Int, Objekt, ParameterDirection) , in diesem Fall fehlt Ihnen nur ein Wert für das object Parameter. Dieser Parameter sollte einen Anfangswert für den von Ihnen verwendeten Oracle-Parameter enthalten. In Ihrem Fall spielt der Anfangswert jedoch keine Rolle, da es sich um einen out handelt Parameter. Fügen Sie null hinzu nach 50 und Ihr gespeicherter Prozeduraufruf sollte erfolgreich sein.

Der von Ihnen aufgerufene ist Add( Zeichenfolge, OracleDbType, Objekt, ParameterDirection) . Die Größe 50 wurde als Initialwert für den Parameter interpretiert. Ich bin mir nicht sicher, wie ich den Fehler interpretieren soll, den Oracle zurückgibt ("numerischer oder Wertfehler") - das impliziert für mich, dass Oracle versucht hat, eine Zeichenfolge in eine Zahl umzuwandeln, und fehlgeschlagen ist. Vielleicht der Wert 50 überschreibt den Typ OracleDbType.Varchar2 und Oracle erwartet also eher eine Zahl als einen String?

Es gab noch ein paar andere Probleme, die ich gefunden habe:

  • Sollte command.Parameters["SP_REQ_NUM"] sei command.Parameters["SP_NUM"] ?
  • Ihre gespeicherte Prozedur gibt keine Zahl zurück; Aufruf von Convert.ToInt32 auf eine Zeichenfolge wie 201405 001 wird scheitern.