19. März 2014

INC und DEC sollte man in PL/SQL Libraries nicht benutzen

In meiner ältesten PL/SQL-Library in Forms 4 waren dies meine ersten Prozeduren:

PROCEDURE Inc (P_Number IN OUT NUMBER) IS
BEGIN
  P_Number := P_Number + 1;
END;

PROCEDURE Dec (P_Number IN OUT NUMBER) IS
BEGIN
  P_Number := P_Number - 1;
END;

Diese Prozeduren nutze ich seit 20 Jahren in der ein oder anderen Variation. Manchmal mit zwei Parametern, oft auch nur mit einem Parameter. In der ganzen Zeit gab es nie Probleme

In neueren Versionen von Oracle Forms funktioniert dies nun nicht mehr

Und warum? Oracle hat in PL/SQL einen neuen SUBTYPE für DECIMAL erzeugt und ihn "DEC" genannt. Diesen TYPE kann man zum Beispiel zur Variablendeklaration benutzen:
DECLARE
  V_Value   DEC;
BEGIN
... 
 
Das zerstört natürlich meine Prozedur in der PL/SQL-Library :-(
Alle anderen Sprachen kennen von Hause aus schon INC und DEC. Nur nicht Oracle!

Also immer schön acht geben beim erzeugen von neuen Funktionen die für lange Zeit gültig sein sollen :-)
Gerd