You can assign multiple values to multiple variables with an SELECT INTO statement at once as shown below:
DO $$
DECLARE
x INT;
y INT;
BEGIN
SELECT * INTO x, y FROM (VALUES (1, 2));
RAISE INFO 'x=% y=%', x, y; -- x=1 y=2
END $$;
Or, you can use an AS clause. *Omitting t. and AS still work:
DO $$
DECLARE
x INT;
y INT;
BEGIN -- ↓↓↓↓↓↓↓↓↓↓↓↓↓
SELECT t.v1, t.v2 INTO x, y FROM (VALUES (1, 2)) AS t (v1, v2);
RAISE INFO 'x=% y=%', x, y; -- x=1 y=2
END $$;
Or, you can set an INTO clause to the end:
DO $$
DECLARE
x INT;
y INT;
BEGIN -- ↓↓↓↓↓↓↓↓↓
SELECT * FROM (VALUES (1, 2)) INTO x, y;
RAISE INFO 'x=% y=%', x, y; -- x=1 y=2
END $$;
Or, you can set an INTO clause to the end. *Omitting t. and AS still work:
DO $$
DECLARE
x INT;
y INT;
BEGIN -- ↓↓↓↓↓↓↓↓↓
SELECT t.v1, t.v2 FROM (VALUES (1, 2)) AS t (v1, v2) INTO x, y;
RAISE INFO 'x=% y=%', x, y; -- x=1 y=2
END $$;