Postgresql ondersteunt historisch gezien geen procedurele code op commandoniveau - alleen binnen functies. In Postgresql 9 is echter ondersteuning toegevoegd om een inline codeblok uit te voeren dat zoiets effectief ondersteunt, hoewel de syntaxis misschien een beetje vreemd is en er veel beperkingen zijn in vergelijking met wat je met SQL Server kunt doen. Het inline codeblok kan met name geen resultatenset retourneren, dus kan het niet worden gebruikt voor wat u hierboven schetst.
Over het algemeen, als je een procedurele code wilt schrijven en deze een resultaat wilt laten retourneren, moet je deze in een functie plaatsen. Bijvoorbeeld:
CREATE OR REPLACE FUNCTION somefuncname() RETURNS int LANGUAGE plpgsql AS $$
DECLARE
one int;
two int;
BEGIN
one := 1;
two := 2;
RETURN one + two;
END
$$;
SELECT somefuncname();
Het PostgreSQL-draadprotocol staat, voor zover ik weet, geen dingen toe als een opdracht die meerdere resultatensets retourneert. U kunt dus niet zomaar T-SQL-batches of opgeslagen procedures toewijzen aan PostgreSQL-functies.