Postgresql historicky nepodporuje procedurální kód na úrovni příkazů – pouze v rámci funkcí. V Postgresql 9 však byla přidána podpora pro spuštění vloženého bloku kódu, který něco takového účinně podporuje, ačkoli syntaxe je možná trochu zvláštní a existuje mnoho omezení ve srovnání s tím, co můžete dělat se serverem SQL. Je pozoruhodné, že vložený blok kódu nemůže vrátit sadu výsledků, takže jej nelze použít pro to, co popisujete výše.
Obecně platí, že pokud chcete napsat nějaký procedurální kód a nechat ho vrátit výsledek, musíte ho vložit do funkce. Například:
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();
Drátový protokol PostgreSQL, pokud vím, neumožňuje věci jako příkaz vracející více sad výsledků. Takže nemůžete jednoduše mapovat dávky T-SQL nebo uložené procedury na funkce PostgreSQL.