[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
>