PostgreSQL - cursores

 
Vista:

cursores

Publicado por Manuel Estevez (2 intervenciones) el 06/03/2009 23:36:26
Hola tengo un problema al querer incluir una funcion con un cursor... a continuacion muestro la version de la db, el codigo y el error que genera:

Welcome to psql 8.1.15 (server 8.1.11), the PostgreSQL interactive terminal.

Type: copyright for distribution terms
h for help with SQL commands
? for help with psql commands
g or terminate with semicolon to execute query
q to quit

yepas2009=# CREATE FUNCTION marbetear_conciliacion()
yepas2009-# RETURNS TRIGGER
yepas2009-# AS $funcion$
yepas2009$#
yepas2009$# DECLARE
yepas2009$# cur_conciliacion CURSOR FOR SELECT ci.id_articulo,(m.id_mueble||'-'||m.id_marbete) AS observaciones FROM marbetes m, conciliacion_inventarioci WHERE ci.direnciancia<>0 AND ci.id_articulo=m.id_articulo GROUP BY ci.id_articulo,m.id_mueble,m.id_marbete ORDER BY ci.id_articulo;
yepas2009$# registro record;
yepas2009$#
yepas2009$# BEGIN
yepas2009$#
yepas2009$#
yepas2009$# IF(TG_OP='INSERT') THEN
yepas2009$# OPEN cur_conciliacion;
yepas2009$# FETCH NEXT FROM cur_conciliacion IN registro;
yepas2009$# WHILE(FOUND)LOOP
yepas2009$# BEGIN
yepas2009$# SELECT observaciones = observaciones || ',';
yepas2009$#
yepas2009$# UPDATE conciliacion_inventario SET observaciones = (observaciones || observaciones)
yepas2009$# WHERE NEW.id_articulo=ci.id_articulo;
yepas2009$#
yepas2009$# FETCH NEXT FROM cur_conciliacion IN registro;
yepas2009$# END;
yepas2009$# END LOOP ;
yepas2009$# CLOSE cur_conciliacion;
yepas2009$# END IF;
yepas2009$#
yepas2009$#
yepas2009$#
yepas2009$# END;
yepas2009$# $funcion$ LANGUAGE 'plpgsql';
ERROR: syntax error at or near "NEXT" at character 471
LINE 14: FETCH NEXT FROM cur_conciliacion IN registro;
^

Espero puedan ayudarme ...

Manuel Estevez Fernandez
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:cursores

Publicado por alejandro (29 intervenciones) el 14/03/2009 17:12:36
Hola,
enves del "IN" utiliza el "INTO"

FETCH NEXT FROM cur_conciliacion into registro;

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar