Pavel Stehule:
Sure there is more possibilities, but I don't want to lost the
possibility to write code like
CREATE TEMP VARIABLE _x;
LET _x = 'hello';
DO $$
BEGIN
RAISE NOTICE '%', _x;
END;
$$;
So I am searching for a way to do it safely, but still intuitive and
user friendly.
Maybe a middle-way between this and Alvaro's proposal could be:
Whenever you have a FROM clause, a variable must be added to it to be
accessible. When you don't have a FROM clause, you can access it directly.
This would make the following work:
RAISE NOTICE '%', _x;
SELECT _x;
SELECT tbl.*, _x FROM tbl, _x;
SELECT tbl.*, (SELECT _x) FROM tbl, _x;
SELECT tbl.*, (SELECT _x FROM _x) FROM tbl;
But the following would be an error:
SELECT tbl.*, _x FROM tbl;
SELECT tbl.*, (SELECT _x) FROM tbl;
Best,
Wolfgang