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

Cursors con insert

Estas en el tema de Cursors con insert en el foro de PostgreSQL en Foros del Web. Hola a todos!! tengo un problema quiero crear un cursor que seleccione de mi tabla Temp_orders aquellas filas que tengan el campo state='F' despues deseo ...
  #1 (permalink)  
Antiguo 07/07/2011, 09:16
 
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Cursors con insert

Hola a todos!! tengo un problema quiero crear un cursor que seleccione de mi tabla Temp_orders aquellas filas que tengan el campo state='F'
despues deseo recorrer el cursor fila por fila e insertar cada fila en una tabla Layers pero no me funciona ell codigo q les dejo abajo.... que esta mal??

Gracias de antemano

Código:
CREATE OR REPLACE FUNCTION sp_test() RETURNS VOID AS
$BODY$
    DECLARE
    or_nbr varchar(36) ;
    symb varchar(16);
    or_action varchar(2);
    shar int;
    price numeric(13,6);
    st char(1);
    event_tim varchar(30);
    tra_id varchar(16);
    market varchar(10);   
    cursX CURSOR FOR SELECT * FROM Temp_orders WHERE state='F';
BEGIN
    OPEN cursX ;
    Loop
    	FETCH cursX INTO or_nbr,symb,or_action,shar, price, st, event_tim, tra_id, market;    
    	INSERT INTO Layers(order_nbr,symbol,orden_action, shares,order_price,state ,event_time, trader_id, market_id)
    	VALUES (or_nbr,symb,or_action,shar, price, st, event_tim, tra_id, market) ;
    END LOOP;
    CLOSE cursX;
END;
$BODY$  LANGUAGE 'plpgsql' VOLATILE;
 
ALTER FUNCTION sp_test() OWNER TO postgres;
 
SELECT * FROM sp_test();
  #2 (permalink)  
Antiguo 07/07/2011, 11:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Cursors con insert

Cual es el error?
debes ponerle cuando salir del cursor.

Código SQL:
Ver original
  1. LOOP
  2. FETCH cursX INTO or_nbr,symb,or_action,shar, price, st, event_tim, tra_id, market;    
  3. EXIT WHEN NOT FOUND;
  4. INSERT INTO Layers(order_nbr,symbol,orden_action, shares,order_price,state ,event_time, trader_id, market_id)
  5.         VALUES (or_nbr,symb,or_action,shar, price, st, event_tim, tra_id, market) ;
  6. END LOOP;
  7.  CLOSE cursX;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 08/07/2011, 12:15
 
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Cursors con insert

El problema es q los datos no son cargados al cursor! y no se porque... ya que mi tabla origen contiene datos... y si ejecuto la sentencia q llena el cursor a parte si me devuelve la tabla con datos!.
  #4 (permalink)  
Antiguo 08/07/2011, 12:29
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Cursors con insert

Y si pruebas declarando el cursor como refcursor.

Código SQL:
Ver original
  1. DECLARE
  2. cursX refcursor;
  3. BEGIN
  4. OPEN cursX FOR SELECT * FROM Temp_orders WHERE state='F';

No lo he probado
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: funcion, insert, postgres, sql
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 06:40.