Converting SQL SERVER Procedure to POSTGRESQL
It's way easier in plpgsql:

CREATE FUNCTION kraj_pilkarze(p_kraj varchar(30)) RETURNS VOID AS $$
DECLARE
  _r RECORD;
  _id_kraj int;
  _nazwa_zespolu text;
BEGIN
  _id_kraj := id_kraj FROM kraj WHERE nazwa = $1;

  FOR _r IN
    SELECT imie, nazwisko, id_zespol, id_kraj FROM pilkarz
  LOOP
    IF r.id_kraj = _id_kraj THEN
      _nazwa_zespolu := nazwa FROM zespol WHERE zespol = _r.id_zespol;
      RAISE NOTICE '% %, %', _r.imie, _r.nazwisko, _nazwa_zespolu;
    END IF;
  END LOOP;
END;
$$ LANGUAGE PLPGSQL;


But the following even simpler one would do the exact same thing:

CREATE FUNCTION kraj_pilkarze(p_kraj varchar(30)) RETURNS VOID AS $$
DECLARE
  _r RECORD;
BEGIN
  FOR _r IN
    SELECT imie, nazwisko, id_zespol, id_kraj, (SELECT nazwa FROM zespol WHERE zespol = p.id_zespol) nazwa
    FROM pilkarz p WHERE id_kraj = (id_kraj FROM kraj WHERE nazwa = $1)
  LOOP
    RAISE NOTICE '% %, %', _r.imie, _r.nazwisko, _r.nazwa;
  END LOOP;
END;
$$ LANGUAGE PLPGSQL;


And you can achieve the same thing straight without even creating a function:

DO $$
DECLARE
  _r RECORD;
BEGIN
  FOR _r IN
    SELECT imie, nazwisko, id_zespol, id_kraj, (SELECT nazwa FROM zespol WHERE zespol = p.id_zespol) nazwa
    FROM pilkarz p WHERE id_kraj = (id_kraj FROM kraj WHERE nazwa = $1)
  LOOP
    RAISE NOTICE '% %, %', _r.imie, _r.nazwisko, _r.nazwa;
  END LOOP;
END;
$$;