On Fri, Dec 12, 2008 at 5:27 PM, M C <[email protected]> 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
--
TIP 5: ¿Has leído nuestro extenso FAQ?
http://www.postgresql.org/docs/faqs.FAQ.html