Überladung in SQL (MySQL )
Durch Techniken, die später im Kurs erklärt werden werden, kann man erkennen, daß der Datentyp des Ergebnisses eines Aufrufs der Funktion »TRUNCATE« unterschiedlich sein kann.
Wenn das erste Argument den Typ »DECIMAL« hat, hat der Aufruf den Typ »DECIMAL«, wie schon früher beschrieben wurde.
Es ist jedoch auch möglich, daß der Typ des ersten Arguments den Typ »DOUBLE« oder »INTEGER« hat. In diesem Fall wird er aber nicht nach »DECIMAL« gewandelt, sondern beibehalten und dann zum Typ des Ergebnisses.
Daher können wir für diesen Funktionsnamen »TRUNCATE« drei verschiedene Synopsen (Aufrufmuster) erkennen:
- »TRUNCATE« (Synopsen)
DOUBLE( N, D ) TRUNCATE( DOUBLE x, INTEGER D )
DECIMAL( N, D ) TRUNCATE( DECIMAL x, INTEGER D )
INT( N ) TRUNCATE( INTEGER x, INTEGER D )
Die in Klammern stehenden Angaben hinter »DOUBLE« sind ähnlich wie bei »INT« nur ein Kommentar zur Formatierung, dabei ist »N« eine Feldbreite und »D« die Anzahl der Nachkommastellen.
Die Funktion »TRUNCATE« wurde als für jeden Zahlentyp so wichtig angesehen, daß für jeden Zahlentyp eine eigene Funktion bereitgestellt wurde. Solch eine Funktion bezeichnet man auch als eine Überladung des Funktionsnamens. Der Funktionsname »TRUNCATE« hat also drei Überladungen.
Viele andere Funktionsnamen haben aber nicht solche Überladungen, sondern feststehenden Typen für ihre Parameter und ihr Ergebnis.
Die Typen der Parameter und die Überladungen sind im Handbuch von MySQL nicht immer eindeutig angegeben. Wir haben aber schon einige Techniken kennengelernt, die es erlauben, den Typ eines Parameters zu ermitteln und werden später noch andere Techniken kennenlernen, welche es erlauben, den Typ eines Rückgabewerts zu ermitteln und so Überladungen zu erkennen.