Uproszczona składnia wygląda następująco:
CREATE FUNCTION nazwa ([rodzaj_argumentu] [nazwa_argumentu] typ_argumentu [,...]) RETURNS typ_wyniku AS ' definicja ' LANGUAGE 'nazwa_języka'
Przykład CREATE FUNCTION subt_one(int4) RETURNS INT4 AS ' BEGIN RETURN $1 -1; END; ' LANGUAGE 'plpgsql'; W tym przypadku wykorzystano język PL/pgSQL. Jest to język specyficzny dla PostgreSQL, w innych bazach danych są dostępne podobne języki. W Oracle na przykład jest to PL/SQL, w Sybase Transact-SQL.
Dodanie języka PL/pgSQL do bazy danych Aby skorzystać z języka PL/pgSQL, należy samodzielnie zainstalować program obsługi. Ponieważ jest to dość skomplikowana operacja, w PostgreSQL umieszczono skrypt pomocniczy, składnia jest następująca: createlang [opcje] [nazwa_jezyka] nazwa_bazy_danych Zwykły użytkownik nie ma prawa dodawać obsługi języka do bazy danych, dlatego zazwyczaj należy połączyć się jako supeużytkownik postgres, wtedy dodajemy przełącznik U z nazwą superużytkownika: createlang -U postgres plpgsql bpfinal -L/usr/local/pgsql/lib Usunięcie języka możliwe jest również tylko dla superużytkownika przez wpisanie w konsoli psql polecenia DROP LANGUAGE 'plpgsql'; W języku PL/pgSQL nie ma znaczenia wielkość liter w słowach kluczowych takich jak BEGIN oraz układ kodu. Możliwe jest również przeciążanie funkcji.