Re: [pgsql-es-ayuda] Como ejecutar una función en postgres

From: Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx>
To: "andrea lisseth fuentes meneses" <andri04_7(at)hotmail(dot)com>, <hermeszambra(at)yahoo(dot)com>, "lista postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Como ejecutar una función en postgres
Date: 2008-08-13 02:38:00
Message-ID: 5FFFAF4D581A41C4810309DC4DCDBF9C@Principal
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

>
>
>From: andrea lisseth fuentes meneses
>Sent: Tuesday, August 12, 2008 9:13 PM
>To: hermeszambra(at)yahoo(dot)com ; lista postgres
>Subject: [pgsql-es-ayuda] Como ejecutar una función en postgres
>
>
>Buenas noches:
>
>Estoy trabajando en mi proyecto de grado agradezco mucho la ayuda que me
>puedan ofrecer.
>
>tengo esta función que toma los registros de una tabla y los pasa a otra,
>cada una pertenece a diferentes esquemas, ya que soy nueva en este tema me
>gustaria saber como poder ejecutar la función ya >que intento con execute
>como se hace en sqlserver, pero me arroja error de sintaxis.
>
>la funcion es la siguiente
>
>CREATE OR REPLACE FUNCTION bodega.ciudad_fn() RETURNS void AS $$
> DECLARE
> llenar RECORD;
> consecutivo integer :=0;
>BEGIN
> FOR llenar in select mun_cdgo,mun_nmbre from udi.mncpios
> LOOP
> consecutivo:=(consecutivo+1);
> INSERT INTO bodega.ciudad values
> (consecutivo,llenar.mun_cdgo,llenar.mun_nmbre);
> END LOOP;
> RETURN;
>
>END;
>$$ LANGUAGE PLPGSQL;
>
>y la intento ejecutar asi:
>EXECUTE bodega.ciudad_fn();
>me aparece error de sintaxis:
>
>ERROR: error de sintaxis en o cerca de «.»
>LINEA 1: EXECUTE bodega.ciudad_fn();
>
>
>Muchas gracias;
>
>Andrea Lisseth Fuentes Meneses

Andrea para ejecutar la función utiliza:

SELECT bodega.ciudad_fn();

Adicional a eso podrías definir el campo consecutivo como autonumérico y
modificar tu función para que trabaje "set based" (no necesitas iterar por
cada registro). Serial algo como:

INSERT INTO bodega.cuidad (mun_cdgo, mun_nmbre)
SELECT mun_cdgo, mun_nmbre
FROM udi.mncpios

Atentamente,

RAUL DUQUE
Bogotá, Colombia

¡Sé solidario, haz clic! Por cada búsqueda que hagas desde Windows Live
Search, estarás ayudando a los que más lo necesitan Un clic solidario

__________ Information from ESET Smart Security, version of virus signature
database 3350 (20080812) __________

The message was checked by ESET Smart Security.

http://www.eset.com

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Raúl Andrés Duque Murillo 2008-08-13 10:40:55 ROW constructor no es compatible con tipo RECORD
Previous Message andrea lisseth fuentes meneses 2008-08-13 02:13:01 Como ejecutar una función en postgres