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

Cursores postgres

Estas en el tema de Cursores postgres en el foro de PostgreSQL en Foros del Web. hola que tal, es la primera vez que escribo en un foro. Necesito entender el tema de cursores. estoy haciendo algo basico para poder entender ...
  #1 (permalink)  
Antiguo 17/03/2012, 17:13
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Exclamación Cursores postgres

hola que tal, es la primera vez que escribo en un foro.
Necesito entender el tema de cursores.
estoy haciendo algo basico para poder entender como funciona. el código es el siguiente.

create or replace function pruebuno( micursor refcursor)
returns SETOF refcursor AS

$BODY$

declare
micursor refcursor;


begin
open micursor for select nombape, legajo from empleados;

FETCH all from
micursor;


end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE

me da error ERROR: syntax error at end of input
LINE 1: SELECT all

no se que me falta o que estoy haciendo mal.
en realidad lo que tengo que hacer, por eso empece por esto es realizar una funcion que pueda ingresar como parámetro un número o letra y me traiga unos datos (dependiendo del dato ingresado). la lógica la tengo el tema es aplicarlo a postgres. mi idea es hacerlo con if y cursores. pero no se por donde empezar.
Saludos.
  #2 (permalink)  
Antiguo 05/04/2012, 08:15
Avatar de jgabrielsinner10  
Fecha de Ingreso: octubre-2008
Mensajes: 26
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Cursores postgres

Oye en realidad no entiendo lo que necesitas hacer, cuál es el objetivo, más si necesitas traer datos desde un store procedure en postgres podrías resolverlo con la creación de consultas dinámicas, acá te dejo un ejemplito que nos dejó nuestro compañero "edwinsp":

Cita:
Iniciado por edwinsp Ver Mensaje
Con la idea de huesos, hice una pequeña funcion, alli en vez del execute uso el return query execute....

Código:
CREATE OR REPLACE FUNCTION pa_consultaprueba(xtabla text)
  RETURNS SETOF record AS
$BODY$
declare
sql text;
begin
sql := 'select codigo::text as codigo, descri::text as descri from '||xtabla;
return query execute sql;
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
y lo invocas asi

Código:
select * from pa_consultaprueba('tabla')
as(codigo text, descri text);
Si quieres ver más acerca de manejo de cursores con postgres te recomiendo una página muy buena:

http://www.java2s.com/Code/PostgreSQL/Cursor/CatalogCursor.htm
  #3 (permalink)  
Antiguo 06/04/2012, 21:33
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Cursores postgres

Cita:
Iniciado por jgabrielsinner10 Ver Mensaje
Oye en realidad no entiendo lo que necesitas hacer, cuál es el objetivo, más si necesitas traer datos desde un store procedure en postgres podrías resolverlo con la creación de consultas dinámicas, acá te dejo un ejemplito que nos dejó nuestro compañero "edwinsp":



Si quieres ver más acerca de manejo de cursores con postgres te recomiendo una página muy buena:

http://www.java2s.com/Code/PostgreSQL/Cursor/CatalogCursor.htm
Gracias!!! otra consulta... tengo en una tabla los titulos con sus respectivos niveles.. ejemplo.. Abogado nivel UNI ( de universitario), Primario PRIM, etc...
en otra tabla que yo arme tengo numeros de legajos, cargos, categorias nombre y apellidos de los empleados y agrupamiento.
como cada empleado puede tener mas de un cargo, yo necesitaba solo los cargos que ocupan a la fecha, bien, eso lo hice.
el tema es que cuando la joineo lo la tabla de estudios obviamente me trae mas de un titulo por legajo, por lo que me duplican los cargos... porque cada empleado tiene cargado el primario, secunadrio, universitario, etc...
ahora bien, yo lo que hice es una funcion (utilizando cursor) que me agrupa los niveles de estudio...
ejemplo.. si es PRIM, SECU, POLI me traiga esos en el 1 nivel.
UNI, UNI4, UNI5 en nivel 2 y asi.
lo que tengo que hacer es lo siguiente: cada legajo tiene un agrupamiento.
si es TA (tecnico administrativo) solo basta que tenga el nivel 1
si es TJ (tecnico juridico) solo basta que tenga el nivel 2.
lo hice, pero me trae duplicados, como ya dije por los titulos, que en cada legajo tengo varios.
Muchas Gracias!!!

Etiquetas: cursores, funcion, plpgsql, postgres, select
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 19:15.