Funktion macht mich wahnsinnig!!!

Hallo nochmals :smiley: ,

das ist wahrscheinlich meine letzte Frage :slight_smile:
Folgende Funktion:

CREATE FUNCTION vza_number(zahl text)
RETURNS INTEGER AS
$BODY$
DECLARE zahl2 INTEGER;
BEGIN
zahl2 := round(CAST(zahl double precision), 0);
RETURN zahl2;
END
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 1;

Die Funktion kriegt einen Parameter dessen inhalt eine zahl z.B. “123132.324234” sein könnte. Sie kriegt diese als text oder varchar, weil das so durch die Funktion vorher definiert wird. Die funktion soll jetzt die zahl runden und als integer zurück geben. Wenn ich das mache gibt er mir die Fehlermeldung:“Funktion round(double precision, integer) existiert nicht”.
Ich habs auch mit “trunc” versucht, da erscheint jedesmal die selbe Fehlermeldung. Ich vermute das mein CAST nicht richtig funktioniert, aber ich weiß nicht warum :confused: . Vielleicht könnt ihr mir ja helfen.

Hi,

PostgreSQL: Documentation: Manuals: PostgreSQL 8.4: Mathematical Functions and Operators

es gibt 2 funktionen in 8.4:
round(dp or numeric) (same as input) round to nearest integer round(42.4) 42
round(v numeric, s int) numeric round to s decimal places round(42.4382, 2) 42.44

Freundliche Grüße

hkocam



test=*# select to_number('123.34'::text,'9999.9999')::int;
 to_number
-----------
       123
(1 row)

test=*# select to_number('123.74'::text,'9999.9999')::int;
 to_number
-----------
       124
(1 row)

Andreas