Re: [MASSMAIL]ayuda sobre procedimientos almacenados y cursores

From: Arcel Labrada Batista <alabradab(at)uci(dot)cu>
To: Freddy Martinez Garcia <freddy311082(at)icloud(dot)com>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [MASSMAIL]ayuda sobre procedimientos almacenados y cursores
Date: 2015-02-10 13:32:08
Message-ID: 998763430.1880267.1423575128094.JavaMail.zimbra@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


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" <freddy311082(at)icloud(dot)com>
Para: "Arcel Labrada Batista" <alabradab(at)uci(dot)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 < alabradab(at)uci(dot)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" < freddy311082(at)icloud(dot)com >
Para: pgsql-es-ayuda(at)postgresql(dot)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

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arcel Labrada Batista 2015-02-10 13:33:09 Re: [MASSMAIL]duda
Previous Message Hellmuth Vargas 2015-02-10 10:55:07 Re: consulta sobre sequencias globales de BDR