Re: Obtener el valor de un campo serial luego de un insert

From: "Jaime Casanova" <jcasanov(at)systemguards(dot)com(dot)ec>
To: "M C" <ayudapostgre(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Obtener el valor de un campo serial luego de un insert
Date: 2008-12-13 19:41:04
Message-ID: 3073cc9b0812131141i1ae610b0sb3ed7df831800f81@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Fri, Dec 12, 2008 at 5:27 PM, M C <ayudapostgre(at)gmail(dot)com> wrote:
>
> CREATE OR REPLACE FUNCTION agregar_item_menu(integer, integer, integer,
> bpchar, bpchar)
> RETURNS serial AS
> $BODY$
> BEGIN
> INSERT INTO menu (id_padre, posicion, nivel, titulo, pagina) VALUES
> ($1,$2,$3,$4,$5)
> RETURNING menu.id_item.currval();
> END
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
> ALTER FUNCTION agregar_item_menu(integer, integer, integer, bpchar, bpchar)
> OWNER TO postgre;
>

imagino que id_padre no es el serial, porque si lo es no estas
ejecutando el nextval() sino asignando un valor al campo...

> pero me da el siguiente error al ejecutar la función
>
> ERROR: query has no destination for result data
> SQL state: 42601
> Context: PL/pgSQL function "agregar_item_menu" line 2 at SQL statement

eso es porque el returning debe poner el valor en alguna variable algo
como INSERT INTO RETURNING INTO var
y luego claro el RETURN de la funcion

--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2008-12-13 21:09:58 Re: LUN´s para Datos y Logs
Previous Message Julio Cesar Rodriguez Dominguez 2008-12-13 15:50:58 Re: Obtener el valor de un campo serial luego de un insert