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

Responder a