Thread: calling function

calling function

From
"William Anthony Lim"
Date:
Hi,
I have a little trouble. I'm newbie in postgresql.

Consider this function example:

create or replace function testcall(int4,varchar,bool,int2) return setof record as '
declarer record;a int4;b varchar;c bool;d int2;
begina=$1;b=$2;c=$3;d=$4;
for r in select * from "T_Customer" loop    return next r;end loop;
return r;
end;'
language 'plpgsql'


when i tried to call it using:
select * from testcall(12,'ABCD',true,20000);

it says:
ERROR:  function testcall(integer, "unknown", boolean, integer) does not exist

then I tried to change to:
select * from testcall(12,varchar'ABCD',true,20000);

it says:
ERROR:  function testcall(integer, character varying, boolean, integer) does not exist

I've tried them using jdbc prepared statement and callable statement (both with/without parameters), but the result is
thesame.
 
what should i do?

Thanks

William


Need a new email address that people can remember
Check out the new EudoraMail at
http://www.eudoramail.com


Re: calling function

From
Tom Lane
Date:
"William Anthony Lim" <wei.liang@eudoramail.com> writes:
> create or replace function testcall(int4,varchar,bool,int2) return setof record as '
> ...
> select * from testcall(12,'ABCD',true,20000);
> ERROR:  function testcall(integer, "unknown", boolean, integer) does not exist

An undecorated integer constant is considered int4 (or int8 or numeric
if large enough), and there's no automatic downcast to int2.  You could
write 20000::int2 or some such, but on the whole I'd recommend declaring
the function to take int4 not int2.
        regards, tom lane