I need to generate a couple of dozen statements reseting my sequences so that they're next values are greater than the biggest existing ids. The problem is, I can't even form a statement to update one sequence. This is what I tried: CREATE OR REPLACE FUNCTION init_sequences() RETURNS void AS $BODY$ DECLARE next_id_table1 INTEGER; BEGIN SELECT INTO next_id_table1 MAX(id)+1 FROM table1; ALTER SEQUENCE pk_table1 RESTART next_id_table1; END; $BODY$ LANGUAGE 'plpgsql'; The problem seems to be the ALTER statement: ERROR: syntax error at or near "$1" at character 36 QUERY: ALTER SEQUENCE pk_table1 RESTART $1 CONTEXT: SQL statement in PL/PgSQL function "init_sequences" near line 5 If I change the ALTER statement like this ALTER SEQUENCE pk_table1 RESTART 200; it works. But is obviously not what I wanted. Is there a way to get the ALTER SEQUENCE statement to use a value stored in a variable? t.n.a.