CREATE OR REPLACE FUNCTION public.insert_sint(num smallint)
  RETURNS boolean AS
$BODY$BEGIN
INSERT INTO test VALUES(num);
RETURN true;
END$BODY$

みたいな関数作って、


SELECT insert_sint(1);

とかやっても、insert_sint(integer)って関数はねぇ! って怒られる。
おとなしく


CREATE OR REPLACE FUNCTION public.insert_sint(num smallint)
  RETURNS boolean AS

で関数書いておけば、勝手にsmallintにして格納してくれる。
当然ながら、


select insert_sint(300000);

とかすると、”smallint out of range”って怒られる。