Thread: Problem with PL/pgSQL
What is wrong with the following function? CREATE FUNCTION logfunc2 (text) RETURNS int AS ' DECLARE text ALIAS FOR $1; BEGIN SELECT length(text); RETURN ''3''; END; ' LANGUAGE 'plpgsql'; I get the following error: ERROR: Unrecognized language specified in a CREATE FUNCTION: 'plpgsql'. Recognized languages are sql, C, internal, and created procedural languages. According to my docs "plpgsql" should be ok. Hans
You need to do CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE AS '/usr/local/pgsql/lib/plpgsql.so' LANGUAGE 'C'; And : CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'; ----- Original Message ----- From: "Hans-Jürgen Schönig" <hs@cybertec.at> To: <pgsql-general@postgresql.org> Sent: Saturday, February 24, 2001 10:01 AM Subject: Problem with PL/pgSQL > What is wrong with the following function? > > CREATE FUNCTION logfunc2 (text) RETURNS int AS ' > DECLARE > text ALIAS FOR $1; > BEGIN > SELECT length(text); > RETURN ''3''; > END; > ' LANGUAGE 'plpgsql'; > > I get the following error: > > ERROR: Unrecognized language specified in a CREATE FUNCTION: 'plpgsql'. > > Recognized languages are sql, C, internal, and created > procedural languages. > > > According to my docs "plpgsql" should be ok. > > Hans > >
On Sat, Feb 24, 2001 at 04:01:59PM +0100, Hans-Jürgen Schönig wrote: > What is wrong with the following function? > > CREATE FUNCTION logfunc2 (text) RETURNS int AS ' > DECLARE > text ALIAS FOR $1; > BEGIN > SELECT length(text); > RETURN ''3''; > END; > ' LANGUAGE 'plpgsql'; That won't work: CREATE FUNCTION logfunc2 (text) RETURNS int4 AS ' DECLARE phrase ALIAS FOR $1; -- "text" is a reserved word BEGIN RETURN length (phrase); END; ' LANGUAGE 'plpgsql'; testbed# SELECT logfunc2('foobar'); logfunc2 ---------- 6 (1 row) > I get the following error: > > ERROR: Unrecognized language specified in a CREATE FUNCTION: 'plpgsql'. > > Recognized languages are sql, C, internal, and created > procedural languages. Maybe plpgsql is not "installed" into template1? template1# SELECT * FROM pg_language; lanname | lanispl | lanpltrusted | lanplcallfoid | lancompiler ----------+---------+--------------+---------------+------------- internal | f | f | 0 | n/a C | f | f | 0 | /bin/cc sql | f | f | 0 | postgres plpgsql | t | t | 21024 | PL/pgSQL plperl | t | t | 305959 | PL/Perl (5 rows) -- Eric G. Miller <egm2@jps.net>
=?iso-8859-1?Q?Hans=2DJ=FCrgen=20Sch=F6nig?= <hs@cybertec.at> writes: > I get the following error: > ERROR: Unrecognized language specified in a CREATE FUNCTION: 'plpgsql'. You didn't run "createlang" to make plpgsql available in your database. It's not installed by default. regards, tom lane
Hans-Jürgen Schönig wrote: > What is wrong with the following function? > > CREATE FUNCTION logfunc2 (text) RETURNS int AS ' > DECLARE > text ALIAS FOR $1; > BEGIN > SELECT length(text); > RETURN ''3''; > END; > ' LANGUAGE 'plpgsql'; > > I get the following error: > > ERROR: Unrecognized language specified in a CREATE FUNCTION: 'plpgsql'. > > Recognized languages are sql, C, internal, and created > procedural languages. > > According to my docs "plpgsql" should be ok. > > Hans plpgsql is not installed by default. createlang 'plpgsql' from the command line should to the trick.