Históricamente, Postgresql no admite código de procedimiento en el nivel de comando, solo dentro de las funciones. Sin embargo, en Postgresql 9, se ha agregado soporte para ejecutar un bloque de código en línea que efectivamente admite algo como esto, aunque la sintaxis quizás sea un poco extraña y existen muchas restricciones en comparación con lo que puede hacer con SQL Server. En particular, el bloque de código en línea no puede devolver un conjunto de resultados, por lo que no se puede usar para lo que describe arriba.
En general, si desea escribir un código de procedimiento y que devuelva un resultado, debe colocarlo dentro de una función. Por ejemplo:
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();
El protocolo de conexión de PostgreSQL, que yo sepa, no permite cosas como un comando que devuelve múltiples conjuntos de resultados. Por lo tanto, no puede simplemente asignar lotes de T-SQL o procedimientos almacenados a funciones de PostgreSQL.