Postgresql storicamente non supporta il codice procedurale a livello di comando, solo all'interno delle funzioni. Tuttavia, in Postgresql 9, è stato aggiunto il supporto per eseguire un blocco di codice inline che supporta effettivamente qualcosa di simile, anche se la sintassi è forse un po' strana e ci sono molte restrizioni rispetto a ciò che puoi fare con SQL Server. In particolare, il blocco di codice inline non può restituire un set di risultati, quindi non può essere utilizzato per ciò che hai descritto sopra.
In generale, se vuoi scrivere del codice procedurale e farlo restituire un risultato, devi inserirlo all'interno di una funzione. Ad esempio:
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();
Il protocollo wire PostgreSQL, per quanto ne so, non consente cose come un comando che restituisce più set di risultati. Quindi non puoi semplicemente mappare batch T-SQL o procedure memorizzate su funzioni PostgreSQL.