Wie sieht den die Paramter-Definition (oder das CREATE-Statement) der Funktion aus?

Wenn Du es aus einem SQL-Statement aufrufen willst, muss es sich um eine (User Defined) Function handeln, d.h. einen Rückgabe-Wert ausgeben werden.
Eine (Stored) Procedure dagegen wird immer mit einem CALL-Befehl aufgerufen.

Sowohl Functions als auch Procedures können überladen werden, d.h. es können mehrere Prozeduren bzw. Funktionen mit dem gleichen Namen jedoch unterschiedlicher Parameter-Definition in der geleichen Bibliothek/Schema vorhanden sein.

Aus diesem Grund muss der Parameter exakt, d.h. mit dem definierten Datentypen (die Länge wird nicht geprüft) übergeben werden. Ggf. muss der Parameter bei Übergabe explizit konvertiert/gecastet werden.

Werden Konstanten oder Ausdrücke übergeben, so wird z.B. bei Zahlen ohne Nachkommastellen der Integer-Datentyp (und nicht etwa der DECIMAL-Datentyp angenommen). Für SQL sind Integer und Decimal unterschiedliche Datentypen und damit wird die Funktion nicht gefunden.

Ähnliches gilt bei alphanumerischen Konstanten. Diese werden als VARCHAR-Datentyp (variable Länge) und nicht als CHAR-Datentyp (fixe Länge) interpretiert. Für SQL sind das unterschieldiche Datentypen und die Funktion wird u.U. nicht gefunden.

Birgitta