Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

duda con cursor y su ejecucion en pgadmin

Estas en el tema de duda con cursor y su ejecucion en pgadmin en el foro de PostgreSQL en Foros del Web. hola foro tengo una duda y espero q puedan ayudarme usando el pgadmin III version 1.6.3 creo la sgte funcion que me devuelve un cursor... ...
  #1 (permalink)  
Antiguo 11/01/2009, 00:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 16 años, 4 meses
Puntos: 0
duda con cursor y su ejecucion en pgadmin

hola foro tengo una duda y espero q puedan ayudarme

usando el pgadmin III version 1.6.3

creo la sgte funcion que me devuelve un cursor...

CREATE OR REPLACE FUNCTION listar_empleado(a refcursor)
RETURNS refcursor AS
$BODY$begin
open $1 for select * from empleado;
return $1;
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE;

luego la ejecuto asi en el sql del pgadmin


begin;
select listar_empleado('a');
fetch all in a;


y bueno la primera vez (y las veces impares) me resulta perfectamente

"15.003.619-4";"jose";"mura";"calle sexta";235677;0;1;6;1985;"disponible";"vina"

(esta es solo una tupla de la tabla, pero me devuelve las 8)


ahora el problema es si la vuelvo a ejecutar ,me sale este mensaje

WARNING: ya hay una transacción en curso

ERROR: cursor "a" already in use
SQL state: 42P03
Context: PL/pgSQL function "listar_empleado" line 2 at open


se q el cursor queda abierto, y que debo cerrarlo pero donde ??
si coloco dentro de la funcion despues del return $1;
close $1; sigue apareciendo el mismo error, si coloco el close en el bloque asi

begin;
select listar_empleado('a');
fetch all in a;
close a;

me tira el sgte mensaje

Query result with 8 rows discarded.

Query returned successfully with no result in 509 ms.

y de ahi surge mi otra pregunta es posible crear la funcion y ejecutar el bloque en una sola linea, o sea es decir (comomis funciones de insertar y actualizar) llamarlas solamente con el select y se ejecute inmediatamente la funcion??

epero no haberles dado la lata agradeciendo de antemano..
  #2 (permalink)  
Antiguo 12/01/2009, 15:10
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 4 meses
Puntos: 27
Respuesta: duda con cursor y su ejecucion en pgadmin

No entiendo bien lo que quieres lograr, si es solo listar los datos de una sola fila dentro de la tabla, para que el cursor???, Si lo que quieres es ejecutar una sentencia en algunas filas puedes hacer dentro de un bucle.

OPEN cursor1;
fetch cursor1 into var;
while found loop
sentencia
fetch cursor1 into var;
end loop;
close cursor1;
RETURN algo;

Para que quieres retornar el puntero??. Si pudieras explicar mejor la funcionalidad que deseas que tenga tu funcion, quizas podria ayudarte de mejor forma.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:26.