PL/pgSQL aktivieren Sie in ein array
Hier ist meine Funktion Erklärung und ein Teil des Körpers:
CREATE OR REPLACE FUNCTION access_update()
RETURNS void AS $$
DECLARE team_ids bigint[];
BEGIN
SELECT INTO team_ids "team_id" FROM "tmp_team_list";
UPDATE "team_prsnl"
SET "updt_dt_tm" = NOW(), "last_access_dt_tm" = NOW()
WHERE "team_id" IN team_ids;
END; $$ LANGUAGE plpgsql;
Möchte ich team_ids
auf ein array von ints, die ich dann nutzen kann in der UPDATE
- Anweisung. Diese Funktion gibt mir Fehler wie diese:
psql:functions.sql:62: ERROR: syntax error at or near "team_ids"
LINE 13: AND "team_id" IN team_ids;
- Ich denke, du hast die Reihenfolge falsch in Ihr wählen Sie. Sollte das nicht heissen:
SELECT team_id INTO team_ids FROM tmp_team_list;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schneller und einfacher mit ein
AUS
- Klausel imUPDATE
- Anweisung:Beiseite, während des Betriebs mit einem array, das
WHERE
Klausel müssteDen
IN
konstruieren, arbeiten mit Gruppen, nicht mit arrays.Erstellen eines array aus einem
SELECT
:Den
IN
Betreiber ist dokumentiert wie eine Unterabfrage für den rechten Operanden. Zum Beispiel:Vielleicht können Sie vermeiden, das array insgesamt, oder versuchen, die Versorgung der array-oder
select from team_ids
.