[Pgsql-ayuda] Llamar una funcion
Patricio Muñoz
pmunoz@cmet.net
Fri, 1 Aug 2003 16:50:42 -0400
No tienes instalado el soporte para ese lenguaje:
Para saber que lenguaje tienes instalado haz lo sgte
select * from pg_languages;
lanname | lanispl | lanpltrusted | lanplcallfoid | lancompiler
----------+---------+--------------+---------------+-------------
internal | f | f | 0 | n/a
C | f | f | 0 | /bin/cc
sql | f | f | 0 | postgres
este es el resultado en mi Linux RedHat 8
1. Crear la función que se encargará de procesar el lenguaje:
DROP FUNCTION plpgsql_call_handler ();
CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE
AS '/usr/lib/pgsql/plpgsql.so' LANGUAGE 'C';
2 .Crear la función handler y dar de alta el lenguaje
DELETE FROM pg_language WHERE lanname='plpgsql';
CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER
plpgsql_call_handler LANCOMPILER 'PL/pgSQL';
ojo que la libreria de plpgsql.so esta en '/usr/lib/pgsql/plpgsql.so' según
mi sistema, tal vez en tu sistema este en otro lugar.
Puedes buscarlo con el comando locate libpgsql.so
saludos
----- Original Message -----
From: "Sergio Valdes" <voig_pgsql@entelchile.net>
To: <pgsql-ayuda@tlali.iztacala.unam.mx>
Sent: Friday, August 01, 2003 4:15 PM
Subject: Re: [Pgsql-ayuda] Llamar una funcion
> Gracias Alvaro por tu ayuda. Lo del Select ya lo habia enontrado mirando
> ejemplos de pl/pgSQL (que distraido soy, siempre estuvieron ahi) pero no
me
> salia nada pues me faltaba la parte final :
> .. as foot (a date).
>
> Además como tu bien decias sólo me devolvia una fila pero cuando agregue
> "setof" ya me salieron todas
>
> Nuevamente gracias, y ahora solo una ultima duda, por que en la clausula
> LANGUAGE no puedo poner "plpqsql" , pues me da un error diciendo: language
> "plpgsql" does not exist.
>
>
> Sergio Valdés H.
> [Pgsql-ayuda]
> ----- Original Message -----
> From: "Alvaro Herrera" <alvherre@dcc.uchile.cl>
> To: "Sergio Valdes" <voig_pgsql@entelchile.net>
> Cc: <pgsql-ayuda@tlali.iztacala.unam.mx>
> Sent: Thursday, July 31, 2003 11:15 PM
> Subject: Re: [Pgsql-ayuda] Llamar una funcion
>
>
> > On Thu, Jul 31, 2003 at 01:30:07PM -0400, Sergio Valdes wrote:
> >
> > Sergio,
> >
> > CREATE FUNCTION "func01" (date)
> > RETURNS setof record AS
> > 'select * from ventas where fecha_venta >= $1'
> > LANGUAGE "sql";
> >
> > > Mis dudas son las siguientes:
> > > Esta bien que el tipo de datos del RETURNS sea record?
> >
> > No, probablemente debe ser SETOF RECORD. Lo otro también funciona pero
> > retorna una cosa distinta (sólo una tupla, y probablemente quieres
> > varias).
> >
> > > Como puedo llamar esta función desde Php 4.3.2?
> >
> > Como desde cualquier otro sitio:
> >
> > select * from func01('2003-02-01') as foo(a date);
> >
> > donde la parte (a date) debe coincidir con la definición de la tabla
> > ventas. En mi caso,
> >
> > alvh=> \d ventas
> > Table "public.ventas"
> > Column | Type | Modifiers
> > ------------+------+-----------
> > fecha_venta | date |
> >
> > --
> > Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
> > "Escucha y olvidarás; ve y recordarás; haz y entenderás" (Confucio)
> > _______________________________________________
> > Pgsql-ayuda mailing list
> > Pgsql-ayuda@tlali.iztacala.unam.mx
> > http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda
>
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda@tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda
>