Re: Funcion con RETURNS SETOF record

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Alberto Cuevas <betocuevas(dot)net(at)gmail(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Funcion con RETURNS SETOF record
Date: 2016-01-19 15:55:03
Message-ID: CAN3Qy4p3zS4Cp=YVRpb+VRFtEOShiCA4iDe+cXqnNMYkrkFk5Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Lista

La reescribí asi:

CREATE OR REPLACE FUNCTION public.f_xconsulta(character varying) RETURNS
SETOF record AS
$BODY$
DECLARE
codigo ALIAS FOR $1;
_registro record;

BEGIN
RETURN QUERY SELECT COD_PER,
NOM_PER
FROM XPERSONA
WHERE COD_PER = codigo;

END;

$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100

ROWS 1000;

Para ejecutar:

SELECT * from f_xconsulta('01') as (COD_PER CHAR(2),NOM_PER VARCHAR(20));

2016-01-19 10:46 GMT-05:00 Alberto Cuevas <betocuevas(dot)net(at)gmail(dot)com>:

> Hola estoy haciendo unas pruebas para usar una función con RETURNS SETOF
> record, con los siguiente:
>
> CREATE TABLE XPERSONA (
> COD_PER CHAR(2),
> NOM_PER VARCHAR(20));
>
> INSERT INTO XPERSONA VALUES ('01', 'ALBERTO');
> INSERT INTO XPERSONA VALUES ('02', 'CARLOS');
> INSERT INTO XPERSONA VALUES ('03', 'JUAN');
>
> CREATE OR REPLACE FUNCTION public.f_xconsulta(character varying) RETURNS
> SETOF record AS
> $BODY$
> DECLARE
> codigo ALIAS FOR $1;
> _registro record;
>
> BEGIN
>
> FOR _registro IN
> SELECT COD_PER,
> NOM_PER
> FROM XPERSONA
> WHERE COD_PER = codigo
> loop
> return next _registro;
>
> END LOOP;
>
> RETURN;
> END;
>
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE
> COST 100
>
> ROWS 1000;
>
>
> Pero al ejecutar:
>
> SELECT f_xconsulta('01');
>
> Me muestra el siguiente mensaje en PGAdmin:
>
> ERROR: se llamó una función que retorna un conjunto en un contexto que no
> puede aceptarlo CONTEXT: función PL/pgSQL f_xconsulta(character varying) en
> la línea 17 en RETURN NEXT
>
> ********** Error **********
>
> ERROR: se llamó una función que retorna un conjunto en un contexto que no
> puede aceptarlo SQL state: 0A000 Context: función PL/pgSQL
> f_xconsulta(character varying) en la línea 17 en RETURN NEXT
>
> Me podrian dar una mano por favor. Uso Postgresql 9.4.5.
>

--
Cordialmente,

Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate
EnterpriseDB Certified PostgreSQL 9.3 Associate

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Cesar Erices 2016-01-19 17:03:02 Re: Ayuda de conexion
Previous Message Anthony Sotolongo 2016-01-19 15:54:48 Re: Funcion con RETURNS SETOF record