Oracle + named parameter

Hi,
ich hoffe es schon mal jemand mit OracleConnection und OracleParameter gearbeitet.

Ich habe heute versucht eine Datumsberechnung durchzuführen was aber immer zu Fehlern führt.

OracleCommand oc = new OracleCommand(
 "SELECT \* FROM INFODBA.HISTORY sh where
 sh.pdate\>(CURRENT\_DATE - :MaxDays) and
 sh.objectname like :HistObj || '%' and
 sh.objecttype = :HistType
 order by sh.objectname ,pdate");
oc.Parameters.Add(new OracleParameter("HistObj", TestOrder ));
oc.Parameters.Add(new OracleParameter("HistType", HistoryType ));
oc.Parameters.Add(new OracleParameter("MaxDays", 365));

Es geht um den letzten Parameter. Schreibe ich die 365 direkt in den OrcaleCommand dann geht es. Als Parameter wirft es einen Fehler, dass dies keine Nummer ist.
Ich befürchte ich benutze schlicht die falsche Syntax, nur leider habe ich in der Oracle-Doku zu odp.net nix dazu gefunden.
(Schon die Syntax wie das LIKE mit Parametern zu verketten ist, hat mich 45 min googeln gekostet)

Gruß
Joey

Hi!

Ins Blaue: Kann es sein, dass der Typ nicht paßt, sprich: Das oc.Parameters.Add defaultmäßig einen VARCHAR-Wert nimmt??

Hast Du schon einmal mit Typenangaben probiert bzw. mit der Klammerung??, a la

oc.Parameters.Add(new OracleParameter("MaxDays",365), OracleType.Number)

(Oder so ähnlich)

Kann aber auch sein, dass ihm das mit der Datumsoperation nicht ganz so paßt …

Aber noch was: Was genau kommt für eine Fehlermeldung??

Grüße,
Tomh

Hi,
die Fehlermeldung ist:
ORA-01722 - invalid number

Hast Du schon einmal mit Typenangaben probiert bzw. mit der
Klammerung??, a la

oc.Parameters.Add(new
OracleParameter(„MaxDays“,365), OracleType.Number)

Jain, wg. odp.net gibt nur „OracleDBType“ und dort gibt es alle Zahlenformat von Oracle aber kein „Number“. Ausserdem für dein Beispiel keine überladene Methode. Die Einzige die geht will immer einen (int size) haben, was immer das bei einer Zahl bedeuten soll.

Aber auch die, die ich bisher ausprobiert habe geben den obigen Fehler.

Vielleicht benutze ich wirklich nur den falschen Datentyp - nur welcher ist es wenn man mit SYS_DATE oder CURRENT_DATE rechnen will?
Oder sollte man besser ein Funktion nehmen? Welche? Oder will er hier eine bestimmte Syntax habe?

Das Beste wäre natürlich wenn man mal eine vernünftige Doku finden würde, die nicht nur die einfachsten Beispiele behandelt.

Ich benutze übrigens den Oracle Client 11g, 11.1.0

Gruss
Joey