From: | Javier Bermúdez Tito <javier_bt(at)hotmail(dot)com> |
---|---|
To: | Ayuda Postgres PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org> |
Cc: | Alejandro Gasca <galejadror(at)gmail(dot)com> |
Subject: | RE: ayuda con funcion sql para obtener registros procesados |
Date: | 2007-07-06 20:31:26 |
Message-ID: | BAY129-W3381871DC31D3B66BD2B585010@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
AHI TA UN PEQUEÑO EJEMPLITO DE COMO RECUPERAR TODOS LOS VALORES DEL INSERT INTO ES MUY FACIL, SI YA LO TIENES EN UN RECORD ESTO LO PUEDES MANIPULAR ESPERO LES SIRVA
CREATE OR REPLACE FUNCTION uso_del_returning() RETURNS varchar AS$body$DECLARE rd record; retu varchar;BEGIN insert into t(a,b) values(1,'valor') returning * INTO rd; return rd.b;END;$body$LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Date: Fri, 6 Jul 2007 12:30:17 -0500From: galejadror(at)gmail(dot)comTo: casivaagustin(at)gmail(dot)comSubject: Re: [pgsql-es-ayuda] ayuda con funcion sql para obtener registros procesadosCC: pgsql-es-ayuda(at)postgresql(dot)org
El día 6/07/07, Agustin Casiva <casivaagustin(at)gmail(dot)com> escribió:
On 7/5/07, Alejandro Gasca <galejadror(at)gmail(dot)com> wrote:> Saludos,>> Estoy haciendo un procedimento en sql. El procedimiento hace un insert, y me> gustaria saber si hay alguna manera de saber cuantos registros proceso, algo > simiar al GET DIAGNOSTICS ... ROW_COUNT de plpgsql.>> Actualmente estoy intentando hacer algo parecido a lo siguiente para> intentar> obtener la cantidad de registros, pero solo obtengo errores :( >> select count(*) from (> insert into foo ...> returning *> ) as consulta;>A ver, si no me equivoco el insert siempre procesa un registro !?Por que queres ver cuantos proceso un insert?, si siempre procesa uno solo en caso de sercorrecta la operación.Insert puede insertar varios registros, por ejemplo:INSERT INTO fu (campo1, campo2) SELECT (campo1, campo2) from fu2;te inserta tantos campos como tenga fu2 (y los indices y demas condiciones sobre la tabla lo permitan)De hecho, varios frontends interceptan el mensaje:"Query returned successfully: 28 rows affected, 47 ms execution time."Mi primer pregunta es como se obtiene ese dato, los "rows affected" desde sql.Ahora, Si quieres ver que se inserto, le puedes poner:INSERT INTO fu (campo1, campo2) SELECT (campo1, campo2) from fu2RETURNING *Cuando se ejecuta esa función, regresa los registros que (realmente) se insertaron... como dice en la documentacion...mi segunda pregunta es: ¿Como hago uso de esa salida en una funcion sql? Como la salida se obtiene de un INSERT, la funcion se niega a reconocerla comoun conjunto de registros. Alejandro.
_________________________________________________________________
Explore the seven wonders of the world
http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE
From | Date | Subject | |
---|---|---|---|
Next Message | Alejandro Gasca | 2007-07-07 00:58:54 | Ayuda con deteccion de actualizacion en cascada |
Previous Message | Alejandro Gasca | 2007-07-06 17:30:17 | Re: ayuda con funcion sql para obtener registros procesados |