Re: help con cursor

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

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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2012-11-14 18:57:19 Re: help con cursor
Previous Message Juan 2012-11-14 18:42:33 Re: help con cursor