Postgresql historycznie nie obsługuje kodu proceduralnego na poziomie poleceń - tylko w ramach funkcji. Jednak w Postgresql 9 dodano obsługę wykonywania wbudowanego bloku kodu, który skutecznie obsługuje coś takiego, chociaż składnia jest być może nieco dziwna i istnieje wiele ograniczeń w porównaniu z tym, co można zrobić z SQL Server. Warto zauważyć, że wbudowany blok kodu nie może zwrócić zestawu wyników, więc nie można go użyć do tego, co opisano powyżej.
Ogólnie, jeśli chcesz napisać jakiś kod proceduralny i sprawić, by zwrócił wynik, musisz umieścić go w funkcji. Na przykład:
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();
O ile mi wiadomo, protokół przewodowy PostgreSQL nie pozwala na takie rzeczy, jak polecenie zwracające wiele zestawów wyników. Nie można więc po prostu mapować partii T-SQL lub procedur składowanych na funkcje PostgreSQL.