Re: help con cursor

From: Juan <smalltalker(dot)marcelo(at)gmail(dot)com>
To: Nicolas Dominguez Florit <nicolasdom(at)gmail(dot)com>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: help con cursor
Date: 2012-11-14 18:42:33
Message-ID: CAKizN9yuJKKsQYQCw7+uEocy6R5eFg_KxS659Lttuvu2RZrgDA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 <nicolasdom(at)gmail(dot)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(dot)marcelo(at)gmail(dot)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
>>
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Nicolas Dominguez Florit 2012-11-14 18:52:26 Re: help con cursor
Previous Message Nicolas Dominguez Florit 2012-11-14 17:46:17 Re: help con cursor