Re: RV: RV: RV: duda con funcion

From: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
To: Yudelsy Castellón García <yude(at)cav(dot)desoft(dot)cu>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: RV: RV: RV: duda con funcion
Date: 2010-01-20 05:05:38
Message-ID: 3073cc9b1001192105g5a03d760w43c4c29a32ab792f@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2010/1/18 Yudelsy Castellón García <yude(at)cav(dot)desoft(dot)cu>:
> Hola a todos, la solución que me dan en este post solamente funciona con
> un solo parámetro porque cuando paso a la función más de un parámetro da
> error, dice que "$2" must be of type cursor or refcursor, la verdad que
> no sé qué hacer con el tema de las funciones que devuelven cursores,

si te refieres a este ejemplo que te pasaron en algún momento fíjate
que el segundo parametro esta declarado como refcursor así que no se
como es que te da ese error, que tal si muestras la función como la
definiste y como la ejecutas y donde te da el error

CREATE FUNCTION eliminar(parametro character varying, refcursor)
RETURNS refcursor AS '
BEGIN
OPEN $2 FOR SELECT * FROM nmusuario;
RETURN $2;
END;
' LANGUAGE plpgsql;

> porque no puedo devolver setof ya que la cantidad de columnas a retornar
> en la función es variable.
>

nadie te ha dicho que no puedes, solo que "no es un buen diseño"...

puedes hacer esto (que obviamente es mas problematico que los cursores):

create function f1(opcion int) returns setof record as $$
begin
if opcion = 1 then
return query consulta1;
elsif opcion = 2 then
return query consulta2;
elsif opcion = 3 then
return query consulta3;
end if;
return;
end;
$$ language plpgsql;

y luego al ejecutar la funcion haces esto:
select * from f1(1) as (col1 tipo_dato1[, col2 tipo_dato2, ...])

donde eso de "col1 tipo_dato1" implica que tienes que decirle que va a
regresar la consulta...

PS: cual es la complejidad de los cursores en postgres? en otros
motores he visto basicamente lo mismo DECLARE, FETCH o MOVE, CLOSE

--
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 2010-01-20 05:07:16 Re: RV: RV: RV: duda con funcion
Previous Message Henry Interiano 2010-01-20 04:40:13 Postgresql y Windows 7