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)
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