2017-05-10 4 views
-2

Ich mag würde x Menge von Jahren zu einem Zeitstempel Variable und weisen sie auf die gleiche Variable, wie so (aber nicht funktioniert)ADD_MONTHS Oracle gespeicherte Prozedur

d_TIMESTAMP := add_months(d_TIMESTAMP,-360); 

ich Fehler

hinzufügen

Fehler (48,13): PLS-00103: Das Symbol "=" wurde festgestellt, wenn eines der folgenden Ereignisse erwartet wird: Konstante Ausnahmetabelle lange doppelte ref char time Zeitstempelintervall Datum binäres nationales Zeichen nchar Das Symbol "" wurde durch "=" ersetzt weitermachen.

+5

Fehler ist nicht in dem, was Sie gepostet haben. Können Sie den Rest des Codes posten? – GurV

+0

Ich versuche +/- einige Jahre zu einer Timestamp-Variable, die ein Parameter in der gespeicherten Prozedur ist. Ich habe es leicht geändert in: 'SELECT add_months (p_TIMESTAMP, -360) INTO p_TIMESTAMP' und der Fehler, den ich bekomme, ist _" Fehler (50,42): PLS-00403: Ausdruck 'P_TIMESTAMP' kann nicht als ein INTO verwendet werden -target einer SELECT/FETCH-Anweisung "_ und _" Fehler (50,54): PL/SQL: ORA-00904:: ungültiger Bezeichner "_ für' FROM DUAL' – snowball

+0

Ich habe diesen, ausstehenden Test behoben .. I versuchte eine IN-Variable zu modifizieren. Das Ändern zu einem IN/OUT entfernte den Fehler. Ich werde die Antwort veröffentlichen, sobald ich es vollständig getestet habe. – snowball

Antwort

0

d_TIMESTAMP ist eine Eingangsgröße und als solche könnte es in den Code nicht ändern. Durch die Variable IN OUT wurde das Problem behoben. Wie so: p_TIMESTAMP IN OUT und dann: SELECT ADD_MONTHS(p_TIMESTAMP,-360) INTO p_TIMESTAMP FROM DUAL;

0

Sie müssen die Anzahl der Monate hinzufügen, die der Anzahl der Jahre entspricht, die Sie hinzufügen möchten. Wenn Sie beispielsweise ein Jahr hinzufügen möchten, müssen Sie 12 Monate hinzufügen. Versuche dies.

d_TIMESTAMP := ADD_MONTHS(d_TIMESTAMP, 12); 

Mehr Informationen über ADD_MONTHS: https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions004.htm

+1

Danke @alejandrogiron, aber genau das mache ich gerade. Nur dass die Anzahl der Monate auch negativ sein kann, und in meinem Fall subtrahiere ich 30 Jahre. – snowball

+0

Ich sehe, es sollte richtig funktionieren. Vielleicht die ganze Prozedur posten, um zu sehen, ob etwas anderes falsch ist? – alejandrogiron

Verwandte Themen