PL/pgSQL SELECT into an array

Viewed 22516

Here's my function declaration and part of the body:

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;

I want team_ids to be an array of ints that I can then use in the UPDATE statement. This function give me errors like this:

psql:functions.sql:62: ERROR:  syntax error at or near "team_ids"
LINE 13:  AND "team_id" IN team_ids;
3 Answers

a tiny customization based on other answers.
If the team_id is a normal int data type.

   UPDATE team_prsnl p
    SET    updt_dt_tm = now()
          ,last_access_dt_tm = now()
    FROM   tmp_team_list t
    WHERE  p.team_id = any(array(select team_id from t));
Related