Problem with self-made plpgsql-function / casting - Mailing list pgsql-sql

From Moritz Bayer
Subject Problem with self-made plpgsql-function / casting
Date
Msg-id c244500b0508200754193958c7@mail.gmail.com
Whole thread Raw
Responses Re: Problem with self-made plpgsql-function / casting  (Mark Dingee <mark.dingee@cox.net>)
Re: Problem with self-made plpgsql-function / casting  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
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
 

pgsql-sql by date:

Previous
From: Halley Pacheco de Oliveira
Date:
Subject: Re: SQL CASE Statements
Next
From: Mark Dingee
Date:
Subject: Re: Problem with self-made plpgsql-function / casting