From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Moritz Bayer <moritz(dot)bayer(at)googlemail(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Problem with self-made plpgsql-function / casting |
Date: | 2005-08-20 15:51:58 |
Message-ID: | 24394.1124553118@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Moritz Bayer <moritz(dot)bayer(at)googlemail(dot)com> writes:
> ERROR: function public.fc_editlanguage(integer, "unknown", "unknown",
> integer) does not exist
>
> CREATE OR REPLACE FUNCTION "public"."fc_editlanguage" (id bigint, name
> varchar, kuerzel varchar, active smallint) RETURNS smallint AS
The short answer to this is to avoid declaring function arguments as
"smallint". When you call this as, say,
select fc_editlanguage(42, 'foo', 'bar', 1);
the "42" and the "1" are initially typed as integer constants. There's
an implicit up-cast from integer to bigint, so the parser has no problem
matching the 42 to a bigint parameter, but the down-cast from integer to
smallint is not implicit. With the function as written you'd have to
cast to smallint explicitly:
select fc_editlanguage(42, 'foo', 'bar', 1::smallint);
This is enough of a notational pain in the neck that it's easier just to
declare the argument as integer.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Moritz Bayer | 2005-08-20 16:00:18 | Re: Problem with self-made plpgsql-function / casting |
Previous Message | Mark Dingee | 2005-08-20 15:45:38 | Re: Problem with self-made plpgsql-function / casting |