From: | Chema Cortés <ch3m4(at)ch3m4(dot)org> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Programación del lado del servidor |
Date: | 2005-01-24 16:46:57 |
Message-ID: | 200501241747.01518.ch3m4@ch3m4.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El Lunes, 24 de Enero de 2005 15:44, Juan Pablo Espino escribió:
> Hola lista,
>
> he leido de que se puede desarrollar funciones en cualquiera de los
> lenguajes procedurales que soporta postgres y luego enlazarlas para
> que corran en el servidor, sin tener que recompilar todo el codigo de
> postgres; sin embargo no lo logro entender como hacer esto. Alguien
> podria darme una mano, gracias anticipadas, saludos
Lo primero es asegurarte que tienes instalados los lenguajes procedurales
(suelen venir en algún paquete a parte).
Se crea una entrada con el lenguaje que quieres utilizar. Conviene saber que
los lenguajes se clasifican según en lenguajes seguros ("trusted") y de
usuario. Para hacer accesible un lenguaje, lo más fácil es usar el comando
"createlang". Si lo ejecutas sobre la base de datos "template1", el resto de
bases de datos se que se creen ya llevarán incluído el lenguaje.
Por ejemplo, para incrustar python:
$ createlang plpythonu mydb
En esta nomenclatura, plpythonu == PL/Python User.
Para crear una función:
CREATE OR REPLACE FUNCTION fact(integer)
RETURNS text AS '
res=1L
for i in xrange(2,args[0]):
res*=i
return str(res)'
LANGUAGE 'plpythonu';
Para su uso:
user=# select fact(50);
fact
-----------------------------------------------------------------
608281864034267560872252163321295376887552831379210240000000000
(1 fila)
Para eliminarla:
DROP FUNCTION fact(integer);
Fíjate que hay que poner explícitamente el tipo del argumento. Las funciones
pueden sobrecargarse como en los lenguajes orientados a objetos.
También puede construirse disparadores, pero es mejor que te leas el manual
del lenguaje procedural que quieras usar, y mires si tienes algún problema
más.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2005-01-24 16:53:12 | Re: Programación del lado del servidor |
Previous Message | Juan Pablo Espino | 2005-01-24 14:44:31 | Programación del lado del servidor |