Juan, me parece que estas usando mal el fetch. ..... DECLARE valor text; cn cursor for SELECT id_nacionalidad from nacionalidades where id_nacionalidad = cod ; BEGIN OPEN cn; FETCH cn INTO valor; IF NOT FOUND THEN .....
Saludos, Nico. El 14 de noviembre de 2012 15:42, Juan <smalltalker.marc...@gmail.com>escribió: > Gente > > Nicolas, le puse el fetch pero no compila!!! > aca esta la funcion con el comentario donde no compila > > CREATE OR REPLACE FUNCTION update_or_insert_nacionalidades(cod text, > nombre text) > RETURNS void AS > $BODY$ > > declare cn cursor for SELECT * from nacionalidades where > id_nacionalidad = cod ; > BEGIN > > > open cn ; > > FETCH count in cn ; /* ESTO NO COMPILA TIRA ERROR-> ERROR: > syntax error at or near ";"LINE 11: FETCH count in c_n ; */ > > if not FOUND then > /* no esta en nacionalidades */ > RAISE NOTICE 'update_or_insert_nacionalidades --> INSERT '; > insert into nacionalidades( id_nacionalidad , nacionalidad ) values ( > cod , nombre ) ; > else > RAISE NOTICE 'update_or_insert_nacionalidades --> UPDATE '; > update nacionalidades set nacionalidad = nombre where id_nacionalidad > = cod ; > end if ; > close c_nacionalidad; > RETURN ; > END; > $BODY$ > LANGUAGE plpgsql VOLATILE > COST 100; > ALTER FUNCTION update_or_insert_nacionalidades(text, text) > OWNER TO postgres; > > > cualquier idea sera agradecida. > salu2 > jmdc > > 2012/11/14 Nicolas Dominguez Florit <nicolas...@gmail.com> > >> Puede ser que lo que te falte sea hacer un FETCH luego del Open? >> Saludos, >> Nico. >> >> >> El 14 de noviembre de 2012 13:58, Juan >> <smalltalker.marc...@gmail.com>escribió: >> >> Gente >>> >>> >>> Tengo un problema con un cursor, y tambien una duda >>> en el sig porcion de codigo , cod y nombre son text y son los parametros >>> de una funcion >>> >>> .. >>> declare c_nacionalidad refcursor ; >>> begin >>> >>> OPEN c_nacionalidad FOR execute 'SELECT * from nacionalidades where >>> id_nacionalidad = ' || quote_literal(cod ) ; >>> if not FOUND then >>> /* no esta en nacionalidades */ >>> RAISE NOTICE 'update_or_insert_nacionalidades --> INSERT '; >>> insert into nacionalidades( id_nacionalidad , nacionalidad ) values ( >>> cod , nombre ) ; >>> else >>> RAISE NOTICE 'update_or_insert_nacionalidades --> UPDATE '; >>> update nacionalidades set nacionalidad = nombre where >>> id_nacionalidad = cod ; >>> end if ; >>> end ; >>> >>> >>> el problema es con el not FOUND, no se si entendi mal, pero me da falso, >>> pero tengo una row con esa clave, >>> preg: luego de un open del cursor se afecta a la variable FOUND ???? >>> donde encuentro esa documentacion, en verdad googleando no la encontre, >>> agradecere cualquier info , >>> salu2 >>> jmdc >>> >> >> >