bei nachfolgend zitierter Funktion (gekürzt) habe ich das Problem, dass bei der Kundennummer immer ‘10129’ rauskommt, egal welchen Parameter ich übergebe.
Ich sehe den Fehler einfach nicht.
Welches zweite Paar Augen kann mir helfen?
CREATE OR REPLACE FUNCTION "getFreeQuota"(uid integer)
RETURNS character varying AS
$BODY$
declare
uid alias for $1;
belongsto integer := 0;
kdnr character varying;
begin
select into belongsto "kscLogin"."belongsto" from "kscLogin" where uid = uid;
IF (belongsto != 1) THEN
select into kdnr "kscStammdaten"."KdNr"::character varying from "kscStammdaten" where uid = belongsto;
ELSE
select into kdnr "kscStammdaten"."KdNr"::character varying from "kscStammdaten" where uid = uid;
END IF;
return kdnr;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Spätestens mit dem Wechsel auf 9.0 klappt das nicht mehr. Da schmeisst Postgres dann einen Fehler wenn ein Parameter den gleichen Namen hat wie eine Spalte Deiner Abfrage.
Übrigens: das “uid alias for $1;” kannst Du Dir sparen.
Es reicht dem Parameter in der Funktionsdefinition einen Namen zu geben.