Postgresql har historiskt sett inte stöd för procedurkod på kommandonivå - bara inom funktioner. I Postgresql 9 har dock stöd lagts till för att exekvera ett inline-kodblock som effektivt stöder något sådant, även om syntaxen kanske är lite udda, och det finns många begränsningar jämfört med vad du kan göra med SQL Server. Noterbart är att inline-kodblocket inte kan returnera en resultatuppsättning, så det kan inte användas för det du beskriver ovan.
I allmänhet, om du vill skriva någon procedurkod och få den att returnera ett resultat, måste du lägga in den i en funktion. Till exempel:
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();
PostgreSQL-trådprotokollet tillåter inte, så vitt jag vet, saker som ett kommando som returnerar flera resultatuppsättningar. Så du kan inte bara mappa T-SQL-batcher eller lagrade procedurer till PostgreSQL-funktioner.