Re: Problem with self-made plpgsql-function / casting

From: Moritz Bayer <moritz(dot)bayer(at)googlemail(dot)com>
To: mark(dot)dingee(at)cox(dot)net
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Problem with self-made plpgsql-function / casting
Date: 2005-08-20 16:00:18
Message-ID: c244500b05082009002090be90@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Thanks for your reply,
but your tip didn't solve my problem. I used your function call:
select fc_editlanguage(0, 'German'::varchar, 'de'::varchar, 1);
but still got an error:
ERROR: function fc_editlanguage(integer, character varying, character
varying, integer) does not exist
HINT: No function matches the given name and argument types. You may need to
add explicit type casts.
At least, as you pointed out, the passed parameters are recognized as
character varying and not as unknown!
So I guess I'm one step further, but haven't reached my goal.
Do you have another hint for me?
Best regards,
Moritz

2005/8/20, Mark Dingee <mark(dot)dingee(at)cox(dot)net>:
>
> Moritz,
>
> The issue is most likely with the passed parameters themselves, not the
> assignments within the function. When you call the function, be sure to
> cast arguments that don't comply with your function definition. For
> example:
>
> Look at your function call. Does it look like this?
>
> select fc_editlanguage(123, 'some name', 'some text value', 456)
>
> What you need to do is be more specific with the types being passed.
>
> Try this instead:
>
> select fc_editlanguage(123, 'some name'::varchar, 'some text
> value'::varchar, 456)
>
> Best of luck,
> Mark
>
> On Sat, 2005-08-20 at 16:54 +0200, Moritz Bayer wrote:
> > Hello,
> >
> > I'm a newbie to postgres and trying to produce my first functions.
> > Everything works fine as long as it takes numeric parameters, but when
> > I'm trying to use varchar or text-parameters, it fails and throws the
> > following exception:
> >
> > ERROR: function public.fc_editlanguage(integer, "unknown", "unknown",
> > integer) does not exist
> > HINT: No function matches the given name and argument types. You may
> > need to add explicit type casts.
> >
> > So I thought I would have to use the pgfunction cast(parameter as
> > type) before working with the parameter within the function. Still,
> > the same exception is thrown and I haven't got a clue how to solve
> > this problem. Hope someone can help me out, here is my written
> > function:
> >
> >
> > CREATE OR REPLACE FUNCTION "public"."fc_editlanguage" (id bigint, name
> > varchar, kuerzel varchar, active smallint) RETURNS smallint AS
> > $body$
> > DECLARE id bigint;
> > DECLARE varlanguage varchar(60);
> > DECLARE browsershortcut varchar(10);
> > DECLARE insertdate date;
> > DECLARE active smallint;
> >
> > DECLARE varreturn smallint;
> >
> > Begin
> > varreturn := 0;
> > id := $1;
> > varlanguage := cast($2 as varchar(60));
> > bowsershortcut := cast($3 as varchar(10));
> > active := $4;
> > if(id=0) then
> > insertdate := now();
> > INSERT INTO tbl_language (la_language, la_browsershortcut,
> > la_insertdate, la_active)
> > VALUES
> > (varlanguage, browsershortcut, insertdate, active);
> > else
> > UPDATE tbl_language SET la_language=varlanguage,
> > la_browsershortcut=browsershortcut, la_active=active
> > WHERE la_id = id;
> > end if;
> > return varreturn;
> > end;
> > $body$
> > LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
> >
> >
> > Greetings from Germany,
> > Moritz
> >
> >
> > PS: I'm using postgres 8.0 on a xp system
> >
>
>

--
<img src="http://ad.zanox.com/ppv/?2510394C569771607" align="bottom"
width="1" height="1" border="0" hspace="1"><a href="
http://ad.zanox.com/ppc/?2510394C569771607T">Lenscare AG - Europas größter
Kontaktlinsenversand</a>

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Moritz Bayer 2005-08-20 16:04:06 Re: Problem with self-made plpgsql-function / casting
Previous Message Tom Lane 2005-08-20 15:51:58 Re: Problem with self-made plpgsql-function / casting