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