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
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 |