a ver si deseas según lo que tienes en el retorno de la funcion SETOF tienes 
que devolver con un RETURN NEXT ademas de crear un ciclo para ello y tambien 
cambiaria la variable de retorno a RECORD por lo que te quedaria algo como esto 

create or replace function models_data_rs() 
returns setof record as $$ 
declare 
ref refcursor; 
salida record; 
begin 
open ref for select * from models; 
loop --comenzar ciclo 
fetch ref into salida; --asignar el cursor a la variable de salida 
exit when not found; --sale del ciclo si la asignación anterior es null 
RETURN NEXT salida;--retorno 
end loop; --cierro el ciclo 
close ref; --cierro el cursor muy importante para liberar memoria 
end; 
$$ language plpgsql; 

PD: esto es a ojo, no lo probé aún 

----- Mensaje original -----

De: "Freddy Martinez Garcia" <freddy311...@icloud.com> 
Para: "Arcel Labrada Batista" <alabra...@uci.cu> 
Enviados: Lunes, 9 de Febrero 2015 10:50:17 
Asunto: Re: [MASSMAIL][pgsql-es-ayuda] ayuda sobre procedimientos almacenados y 
cursores 

gracias Arcel, es exactamente ese mi error... por otro lado este método me 
devuelve un cursor... cuando hago FETCH ALL IN 'nombre_cursor' que se lo pasé 
por parámetro (eso lo modifiqué luego) no me imprime la tabala, y si hago el 
select me trae los 24 registros que tengo en la tabla models... tengo que hacer 
algo más ?? 

disculpa la molestia hermano 

saludos cordiales 


============================================= 
"El tamaño de tus logros depende del tamaño de tus metas." 
C++ and Qt Senior Developer 
Lic. Computer Science 
Buenos Aires, Argentina 




On Feb 9, 2015, at 12:43 PM, Arcel Labrada Batista < alabra...@uci.cu > wrote: 

quien es r?, estas abriendo el cursor y asignando el resultado de la consulta 
en r, te quedaría 

create or replace function models_data_rs() 
returns setof refcursor as $$ 
declare 
ref refcursor; 
begin 
open ref for select * from models; 
end; 
$$ language plpgsql; 

----- Mensaje original -----

De: "Freddy Martinez Garcia" < freddy311...@icloud.com > 
Para: pgsql-es-ayuda@postgresql.org 
Enviados: Viernes, 6 de Febrero 2015 14:49:10 
Asunto: [MASSMAIL][pgsql-es-ayuda] ayuda sobre procedimientos almacenados y 
cursores 

Hola a todos. 

soy nuevo usando postgres y tengo el siguiente código: 

create or replace function models_data_rs() 
returns setof refcursor as $$ 
declare 
ref refcursor; 
begin 
open ref for select * into r from models; 
end; 
$$ language plpgsql; 

hasta ahí va todo bien, el tema es que desde el mismo postgres cuando hago 

select models_data_rs(); 

postgres me da el siguiente error: 

ERROR: cannot open SELECT query as cursor 
CONTEXT: PL/pgSQL function models_data_rs() line 5 at OPEN 

********** Error ********** 

ERROR: cannot open SELECT query as cursor 
SQL state: 42P11 
Context: PL/pgSQL function models_data_rs() line 5 at OPEN 

cómo resuelvo el problema ?? 

saludos a todos 


============================================= 
"El tamaño de tus logros depende del tamaño de tus metas." 
C++ and Qt Senior Developer 
Lic. Computer Science 
Buenos Aires, Argentina 










Responder a