Hallo zusammen,
ich bin MySQL-Umsteiger und habe nun das Vergnügen einige Stored Functions nach plpgsql umzuschreiben. Ging soweit ganz gut, aber mir macht eine bigint-Variable Ärger. Konkret sieht es (auf Nötigste zusammengeschrieben) so aus:
CREATE OR REPLACE FUNCTION ConvertVersion("Version" character varying) RETURNS bigint AS
$BODY$
DECLARE e1 bigint; e2 bigint; e3 bigint; e4 bigint;
DECLARE res bigint;
DECLARE DelimiterCount INT;
DECLARE lVersion character varying;
BEGIN
-- hier mal aufs nötigste runtergebrochen
-- Der eigentliche Inhalt von e1 - e4
-- wird per SQL ermittelt
e1 := 1;
e2 := 2;
e3 := 3;
e4 := 4;
-- hier knallt es
res := e1*(10000 * 10000 * 10000) + e2*(10000 * 10000) + e3 * 10000 + e4;
RETURN res;
END;
$BODY$
LANGUAGE plpgsql IMMUTABLE
COST 100;
Das Ganze fliegt mir aber mit folgende Meldung um die Ohren:
FEHLER: integer ist außerhalb des gültigen Bereichs
CONTEXT: SQL-Anweisung »SELECT e1*(10000 * 10000 * 10000)«
Was mich daran irritiert ist, dass eigentlich nirgendwo mehr ein integer vorhanden ist und die Ergebniszahl doch in einen bigint passen müsste. Was habe ich übersehen, damit die Rechnung funktioniert?