Postgresqlは歴史的に、コマンドレベルで手続き型コードをサポートしていません-関数内でのみサポートしています。ただし、Postgresql 9では、このようなものを効果的にサポートするインラインコードブロックを実行するためのサポートが追加されましたが、構文はおそらく少し奇妙であり、SQLServerで実行できるものと比較して多くの制限があります。特に、インラインコードブロックは結果セットを返すことができないため、上記の概要に使用することはできません。
一般に、手続き型コードを記述して結果を返す場合は、関数内に配置する必要があります。例:
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ワイヤープロトコルは、私が知る限り、複数の結果セットを返すコマンドのようなものを許可していません。そのため、T-SQLバッチまたはストアドプロシージャをPostgreSQL関数に単純にマッピングすることはできません。